From c139c6e1ef8ed745bc96d7ba3f84a7e189c4a861 Mon Sep 17 00:00:00 2001 From: Andrew Brampton Date: Fri, 3 Jul 2015 14:53:50 -0700 Subject: 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 --- helpers/content.go | 5 ++++- helpers/content_renderer.go | 23 +++++++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 helpers/content_renderer.go (limited to 'helpers') 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) + } +} -- cgit v1.2.3