Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/gohugoio/hugo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Brampton <github@bramp.net>2015-07-04 00:53:50 +0300
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2015-07-08 09:12:52 +0300
commitc139c6e1ef8ed745bc96d7ba3f84a7e189c4a861 (patch)
treeed882a576dd2c565c171b273f2b1641d8102981c /helpers
parentfdab118010f3b5ad027038bb2b2040d30478852e (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.go5
-rw-r--r--helpers/content_renderer.go23
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)
+ }
+}