}
}
} else {
- // Apply new values to the root.
- differentRootKeys = append(differentRootKeys, "")
+ switch vv.(type) {
+ case maps.Params:
+ differentRootKeys = append(differentRootKeys, kk)
+ default:
+ // Apply new values to the root.
+ differentRootKeys = append(differentRootKeys, "")
+ }
}
}
differentRootKeys = helpers.UniqueStringsSorted(differentRootKeys)
cfg.Set("minify", maps.Params{"minifyOutput": true})
}
- // Simplify later merge.
- languages := cfg.GetStringMap("languages")
- for _, v := range languages {
- switch m := v.(type) {
- case maps.Params:
- // params have merge strategy deep by default.
- // The languages config key has strategy none by default.
- // This means that if these two sections does not exist on the left side,
- // they will not get merged in, so just create some empty maps.
- if _, ok := m["params"]; !ok {
- m["params"] = maps.Params{}
- }
- }
-
- }
-
return nil
}
}
+func TestConfigMergeLanguageDeepEmptyLefSide(t *testing.T) {
+ t.Parallel()
+
+ files := `
+-- hugo.toml --
+[params]
+p1 = "p1base"
+[languages.en]
+languageCode = 'en-US'
+languageName = 'English'
+weight = 1
+[languages.en.markup.goldmark.extensions.typographer]
+leftDoubleQuote = '“' # default “
+rightDoubleQuote = '”' # default ”
+
+[languages.de]
+languageCode = 'de-DE'
+languageName = 'Deutsch'
+weight = 2
+[languages.de.params]
+p1 = "p1de"
+[languages.de.markup.goldmark.extensions.typographer]
+leftDoubleQuote = '«' # default “
+rightDoubleQuote = '»' # default ”
+-- layouts/index.html --
+{{ .Content }}
+p1: {{ site.Params.p1 }}|
+-- content/_index.en.md --
+---
+title: "English Title"
+---
+A "quote" in English.
+-- content/_index.de.md --
+---
+title: "Deutsch Title"
+---
+Ein "Zitat" auf Deutsch.
+
+
+
+`
+ b := NewIntegrationTestBuilder(
+ IntegrationTestConfig{
+ T: t,
+ TxtarString: files,
+ },
+ ).Build()
+
+ b.AssertFileContent("public/index.html", "p1: p1base", "<p>A “quote” in English.</p>")
+ b.AssertFileContent("public/de/index.html", "p1: p1de", "<p>Ein «Zitat» auf Deutsch.</p>")
+
+}
+
func TestConfigLegacyValues(t *testing.T) {
t.Parallel()