Fix for page.GetParam() for JSON and TOML maps

Setting per-page Blackfriday angledQuotes did not work
with TOML or JSON front matter, but it does work with YAML.

It turns out that page.Params("blackfriday") returns
type map[interface{}]interface{} for YAML, but
type map[string]interface{} for JSON and TOML.

This patch updates page.GetParam() to catch the latter,
with an error message if page.GetParam() does not recognize
a type.  A test is also added.
This commit is contained in:
Anthony Fok
2015-01-24 04:44:35 -07:00
committed by bep
parent a0c6dba305
commit 803865f870
2 changed files with 18 additions and 1 deletions

View File

@@ -19,6 +19,7 @@ import (
"fmt"
"github.com/spf13/hugo/helpers"
"github.com/spf13/hugo/parser"
"reflect"
"github.com/spf13/cast"
"github.com/spf13/hugo/hugofs"
@@ -522,9 +523,13 @@ func (page *Page) GetParam(key string) interface{} {
return cast.ToTime(v)
case []string:
return helpers.SliceToLower(v.([]string))
case map[interface{}]interface{}:
case map[string]interface{}: // JSON and TOML
return v
case map[interface{}]interface{}: // YAML
return v
}
jww.ERROR.Printf("GetParam(\"%s\"): Unknown type %s\n", key, reflect.TypeOf(v))
return nil
}