summaryrefslogtreecommitdiffstats
path: root/common/maps/maps.go
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2019-11-21 21:59:38 +0100
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2019-11-22 18:41:50 +0100
commita3fe5e5e35f311f22b6b4fc38abfcf64cd2c7d6f (patch)
tree06cf1f647ae026b4fb3053c85370c2b203c7a089 /common/maps/maps.go
parentcd07e6d57b158a76f812e8c4c9567dbc84f57939 (diff)
Fix Params case handling in the index, sort and where func
This means that you can now do: ``` {{ range where .Site.Pages "Params.MYPARAM" "foo" }} ```
Diffstat (limited to 'common/maps/maps.go')
-rw-r--r--common/maps/maps.go31
1 files changed, 25 insertions, 6 deletions
diff --git a/common/maps/maps.go b/common/maps/maps.go
index e0d4f964d..8b42ca764 100644
--- a/common/maps/maps.go
+++ b/common/maps/maps.go
@@ -25,26 +25,45 @@ import (
// recursively.
// Notes:
// * This will modify the map given.
-// * Any nested map[interface{}]interface{} will be converted to map[string]interface{}.
-func ToLower(m map[string]interface{}) {
+// * Any nested map[interface{}]interface{} will be converted to Params.
+func ToLower(m Params) {
for k, v := range m {
+ var retyped bool
switch v.(type) {
case map[interface{}]interface{}:
- v = cast.ToStringMap(v)
- ToLower(v.(map[string]interface{}))
+ var p Params = cast.ToStringMap(v)
+ v = p
+ ToLower(p)
+ retyped = true
case map[string]interface{}:
- ToLower(v.(map[string]interface{}))
+ var p Params = v.(map[string]interface{})
+ v = p
+ ToLower(p)
+ retyped = true
}
lKey := strings.ToLower(k)
- if k != lKey {
+ if retyped || k != lKey {
delete(m, k)
m[lKey] = v
}
+ }
+}
+func ToStringMapE(in interface{}) (map[string]interface{}, error) {
+ switch in.(type) {
+ case Params:
+ return in.(Params), nil
+ default:
+ return cast.ToStringMapE(in)
}
}
+func ToStringMap(in interface{}) map[string]interface{} {
+ m, _ := ToStringMapE(in)
+ return m
+}
+
type keyRename struct {
pattern glob.Glob
newKey string