diff options
author | Andrew Brampton <github@bramp.net> | 2015-07-04 00:53:50 +0300 |
---|---|---|
committer | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2015-07-08 09:12:52 +0300 |
commit | c139c6e1ef8ed745bc96d7ba3f84a7e189c4a861 (patch) | |
tree | ed882a576dd2c565c171b273f2b1641d8102981c /helpers | |
parent | fdab118010f3b5ad027038bb2b2040d30478852e (diff) |
Add support for GitHub-flavoured markdown code fences for highlighting
This commit adds a new PygmentsCodeFences config option (default false), which if true will allow GitHub style backtick code fences around code, which will then be rendered by Pygments.
For example:
``` language
your code
```
can be used instead of {{< highlight language >}}your code {{< /highlight >}}.
Fixes #362
Diffstat (limited to 'helpers')
-rw-r--r-- | helpers/content.go | 5 | ||||
-rw-r--r-- | helpers/content_renderer.go | 23 |
2 files changed, 27 insertions, 1 deletions
diff --git a/helpers/content.go b/helpers/content.go index cd4563441..a846d2fa1 100644 --- a/helpers/content.go +++ b/helpers/content.go @@ -167,9 +167,12 @@ func GetHTMLRenderer(defaultFlags int, ctx *RenderingContext) blackfriday.Render htmlFlags |= blackfriday.HTML_SMARTYPANTS_LATEX_DASHES } - return blackfriday.HtmlRendererWithParameters(htmlFlags, "", "", renderParameters) + return &HugoHtmlRenderer{ + blackfriday.HtmlRendererWithParameters(htmlFlags, "", "", renderParameters), + } } + func getMarkdownExtensions(ctx *RenderingContext) int { flags := 0 | blackfriday.EXTENSION_NO_INTRA_EMPHASIS | blackfriday.EXTENSION_TABLES | blackfriday.EXTENSION_FENCED_CODE | diff --git a/helpers/content_renderer.go b/helpers/content_renderer.go new file mode 100644 index 000000000..bb5b810ae --- /dev/null +++ b/helpers/content_renderer.go @@ -0,0 +1,23 @@ +package helpers + +import ( + "bytes" + "html" + + "github.com/russross/blackfriday" + "github.com/spf13/viper" +) + +// Wraps a blackfriday.Renderer, typically a blackfriday.Html +type HugoHtmlRenderer struct { + blackfriday.Renderer +} + +func (renderer *HugoHtmlRenderer) BlockCode(out *bytes.Buffer, text []byte, lang string) { + if viper.GetBool("PygmentsCodeFences") { + str := html.UnescapeString(string(text)) + out.WriteString(Highlight(str, lang, "")) + } else { + renderer.Renderer.BlockCode(out, text, lang) + } +} |