mirror of
https://github.com/gohugoio/hugo.git
synced 2024-11-21 20:46:30 -05:00
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:
parent
fdab118010
commit
c139c6e1ef
3 changed files with 28 additions and 1 deletions
|
@ -148,6 +148,7 @@ func LoadDefaultSettings() {
|
|||
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)
|
||||
|
|
|
@ -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 |
|
||||
|
|
23
helpers/content_renderer.go
Normal file
23
helpers/content_renderer.go
Normal 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)
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue