shithub: hugo

Download patch

ref: c139c6e1ef8ed745bc96d7ba3f84a7e189c4a861
parent: fdab118010f3b5ad027038bb2b2040d30478852e
author: Andrew Brampton <[email protected]>
date: Fri Jul 3 10:53:50 EDT 2015

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

--- a/commands/hugo.go
+++ b/commands/hugo.go
@@ -148,6 +148,7 @@
 	viper.SetDefault("PygmentsStyle", "monokai")
 	viper.SetDefault("DefaultExtension", "html")
 	viper.SetDefault("PygmentsUseClasses", false)
+	viper.SetDefault("PygmentsCodeFences", false)
 	viper.SetDefault("DisableLiveReload", false)
 	viper.SetDefault("PluralizeListTitles", true)
 	viper.SetDefault("PreserveTaxonomyNames", false)
--- a/helpers/content.go
+++ b/helpers/content.go
@@ -167,8 +167,11 @@
 		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 |
--- /dev/null
+++ b/helpers/content_renderer.go
@@ -1,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)
+	}
+}