shithub: hugo

Download patch

ref: 5838420aa1f5dfb6aa73479caa60467cc27dee82
parent: fde47c5eb9435083cc492b8648517b374eb60c6b
author: Marek Janda <[email protected]>
date: Tue Nov 3 15:09:34 EST 2015

Move blackfriday site-wide config loading to NewBlackFriday()

--- a/helpers/content.go
+++ b/helpers/content.go
@@ -24,7 +24,9 @@
 	"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 @@
 	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{
--- a/hugolib/page.go
+++ b/hugolib/page.go
@@ -246,26 +246,10 @@
 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())
 		}
 	})