summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--common/maps/params.go4
-rw-r--r--common/maps/params_test.go24
-rw-r--r--hugolib/config.go2
-rw-r--r--hugolib/config_test.go3
4 files changed, 32 insertions, 1 deletions
diff --git a/common/maps/params.go b/common/maps/params.go
index ecb63d7a5..1f0856598 100644
--- a/common/maps/params.go
+++ b/common/maps/params.go
@@ -37,7 +37,11 @@ func getNested(m map[string]interface{}, indices []string) (interface{}, string,
first := indices[0]
v, found := m[strings.ToLower(cast.ToString(first))]
if !found {
+ if len(indices) == 1 {
+ return nil, first, m
+ }
return nil, "", nil
+
}
if len(indices) == 1 {
diff --git a/common/maps/params_test.go b/common/maps/params_test.go
index 8016a8bd6..46d672d87 100644
--- a/common/maps/params_test.go
+++ b/common/maps/params_test.go
@@ -47,5 +47,29 @@ func TestGetNestedParam(t *testing.T) {
c.Assert(must("nested_color", "_", m), qt.Equals, "blue")
c.Assert(must("nested.nestednested.color", ".", m), qt.Equals, "green")
c.Assert(must("string.name", ".", m), qt.IsNil)
+ c.Assert(must("nested.foo", ".", m), qt.IsNil)
+
+}
+
+// https://github.com/gohugoio/hugo/issues/7903
+func TestGetNestedParamFnNestedNewKey(t *testing.T) {
+
+ c := qt.New(t)
+
+ nested := map[string]interface{}{
+ "color": "blue",
+ }
+ m := map[string]interface{}{
+ "nested": nested,
+ }
+
+ existing, nestedKey, owner, err := GetNestedParamFn("nested.new", ".", func(key string) interface{} {
+ return m[key]
+ })
+
+ c.Assert(err, qt.IsNil)
+ c.Assert(existing, qt.IsNil)
+ c.Assert(nestedKey, qt.Equals, "new")
+ c.Assert(owner, qt.DeepEquals, nested)
}
diff --git a/hugolib/config.go b/hugolib/config.go
index 7500dfc72..72b51272b 100644
--- a/hugolib/config.go
+++ b/hugolib/config.go
@@ -198,6 +198,8 @@ func LoadConfig(d ConfigSourceDescriptor, doWithConfig ...func(cfg config.Provid
} else {
v.Set(key, val)
}
+ } else if nestedKey != "" {
+ owner[nestedKey] = valStr
} else {
v.Set(key, valStr)
}
diff --git a/hugolib/config_test.go b/hugolib/config_test.go
index a52e3f061..cb9c1d8f6 100644
--- a/hugolib/config_test.go
+++ b/hugolib/config_test.go
@@ -495,7 +495,6 @@ stringSlice = ["a", "b"]
[imaging]
anchor = "smart"
quality = 75
-resamplefilter = "CatmullRom"
`
b := newTestSitesBuilder(t).WithConfigFile("toml", baseConfig)
@@ -505,6 +504,7 @@ resamplefilter = "CatmullRom"
"HUGO_NEW", "new", // key not in config.toml
"HUGO_ENABLEGITINFO", "false",
"HUGO_IMAGING_ANCHOR", "top",
+ "HUGO_IMAGING_RESAMPLEFILTER", "CatmullRom",
"HUGO_STRINGSLICE", `["c", "d"]`,
"HUGO_INTSLICE", `[5, 8, 9]`,
"HUGO_FLOATSLICE", `[5.32]`,
@@ -519,6 +519,7 @@ resamplefilter = "CatmullRom"
c.Assert(cfg.Get("new"), qt.Equals, "new")
c.Assert(cfg.Get("imaging.anchor"), qt.Equals, "top")
c.Assert(cfg.Get("imaging.quality"), qt.Equals, int64(75))
+ c.Assert(cfg.Get("imaging.resamplefilter"), qt.Equals, "CatmullRom")
c.Assert(cfg.Get("stringSlice"), qt.DeepEquals, []interface{}{"c", "d"})
c.Assert(cfg.Get("floatSlice"), qt.DeepEquals, []interface{}{5.32})
c.Assert(cfg.Get("intSlice"), qt.DeepEquals, []interface{}{5, 8, 9})