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
This commit is contained in:
Andrew Brampton 2015-07-03 14:53:50 -07:00 committed by Bjørn Erik Pedersen
parent fdab118010
commit c139c6e1ef
3 changed files with 28 additions and 1 deletions

View file

@ -148,6 +148,7 @@ func LoadDefaultSettings() {
viper.SetDefault("PygmentsStyle", "monokai") viper.SetDefault("PygmentsStyle", "monokai")
viper.SetDefault("DefaultExtension", "html") viper.SetDefault("DefaultExtension", "html")
viper.SetDefault("PygmentsUseClasses", false) viper.SetDefault("PygmentsUseClasses", false)
viper.SetDefault("PygmentsCodeFences", false)
viper.SetDefault("DisableLiveReload", false) viper.SetDefault("DisableLiveReload", false)
viper.SetDefault("PluralizeListTitles", true) viper.SetDefault("PluralizeListTitles", true)
viper.SetDefault("PreserveTaxonomyNames", false) viper.SetDefault("PreserveTaxonomyNames", false)

View file

@ -167,9 +167,12 @@ func GetHTMLRenderer(defaultFlags int, ctx *RenderingContext) blackfriday.Render
htmlFlags |= blackfriday.HTML_SMARTYPANTS_LATEX_DASHES htmlFlags |= blackfriday.HTML_SMARTYPANTS_LATEX_DASHES
} }
return blackfriday.HtmlRendererWithParameters(htmlFlags, "", "", renderParameters) return &HugoHtmlRenderer{
blackfriday.HtmlRendererWithParameters(htmlFlags, "", "", renderParameters),
}
} }
func getMarkdownExtensions(ctx *RenderingContext) int { func getMarkdownExtensions(ctx *RenderingContext) int {
flags := 0 | blackfriday.EXTENSION_NO_INTRA_EMPHASIS | flags := 0 | blackfriday.EXTENSION_NO_INTRA_EMPHASIS |
blackfriday.EXTENSION_TABLES | blackfriday.EXTENSION_FENCED_CODE | blackfriday.EXTENSION_TABLES | blackfriday.EXTENSION_FENCED_CODE |

View file

@ -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)
}
}