Move blackfriday site-wide config loading to NewBlackFriday()

This commit is contained in:
Marek Janda 2015-11-03 20:09:34 +01:00 committed by Bjørn Erik Pedersen
parent fde47c5eb9
commit 5838420aa1
2 changed files with 29 additions and 27 deletions

View file

@ -24,7 +24,9 @@ import (
"unicode/utf8"
"github.com/miekg/mmark"
"github.com/mitchellh/mapstructure"
"github.com/russross/blackfriday"
"github.com/spf13/cast"
bp "github.com/spf13/hugo/bufferpool"
jww "github.com/spf13/jwalterweatherman"
"github.com/spf13/viper"
@ -52,17 +54,33 @@ type Blackfriday struct {
ExtensionsMask []string
}
// NewBlackfriday creates a new Blackfriday with some sane defaults.
// NewBlackfriday creates a new Blackfriday filled with site config or some sane defaults
func NewBlackfriday() *Blackfriday {
return &Blackfriday{
Smartypants: true,
AngledQuotes: false,
Fractions: true,
HrefTargetBlank: false,
SmartDashes: true,
LatexDashes: true,
PlainIDAnchors: false,
combinedParam := map[string]interface{}{
"smartypants": true,
"angledQuotes": false,
"fractions": true,
"hrefTargetBlank": false,
"smartDashes": true,
"latexDashes": true,
"plainIDAnchors": false,
}
siteParam := viper.GetStringMap("blackfriday")
if siteParam != nil {
siteConfig := cast.ToStringMap(siteParam)
for key, value := range siteConfig {
combinedParam[key] = value
}
}
combinedConfig := &Blackfriday{}
if err := mapstructure.Decode(combinedParam, combinedConfig); err != nil {
jww.FATAL.Printf("Failed to get site rendering config\n%s", err.Error())
}
return combinedConfig
}
var blackfridayExtensionMap = map[string]int{

View file

@ -246,26 +246,10 @@ func (p *Page) renderContent(content []byte) []byte {
func (p *Page) getRenderingConfig() *helpers.Blackfriday {
p.renderingConfigInit.Do(func() {
pageParam := p.GetParam("blackfriday")
siteParam := viper.GetStringMap("blackfriday")
pageParam := cast.ToStringMap(p.GetParam("blackfriday"))
combinedParam := siteParam
if pageParam != nil {
combinedParam = make(map[string]interface{})
for k, v := range siteParam {
combinedParam[k] = v
}
pageConfig := cast.ToStringMap(pageParam)
for key, value := range pageConfig {
combinedParam[key] = value
}
}
p.renderingConfig = helpers.NewBlackfriday()
if err := mapstructure.Decode(combinedParam, p.renderingConfig); err != nil {
if err := mapstructure.Decode(pageParam, p.renderingConfig); err != nil {
jww.FATAL.Printf("Failed to get rendering config for %s:\n%s", p.BaseFileName(), err.Error())
}
})