diff options
author | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2023-05-20 11:17:43 +0200 |
---|---|---|
committer | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2023-05-20 12:40:32 +0200 |
commit | 4f085e80da9a415725db3def70e5ce847cf06741 (patch) | |
tree | 56e3c5c2e5686a903b920be211bc7870934bb8e6 | |
parent | 150d190ff041f7da905afea7f3b9ca6bd4a31a48 (diff) |
Make language merging of markup etc. config without values in the root
Updates #10953
-rw-r--r-- | config/allconfig/allconfig.go | 9 | ||||
-rw-r--r-- | config/allconfig/load.go | 16 | ||||
-rw-r--r-- | hugolib/config_test.go | 53 |
3 files changed, 60 insertions, 18 deletions
diff --git a/config/allconfig/allconfig.go b/config/allconfig/allconfig.go index 22e9f1deb..4886aa561 100644 --- a/config/allconfig/allconfig.go +++ b/config/allconfig/allconfig.go @@ -748,8 +748,13 @@ func FromLoadConfigResult(fs afero.Fs, res config.LoadConfigResult) (*Configs, e } } } 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) diff --git a/config/allconfig/load.go b/config/allconfig/load.go index 51c1bf279..6ae26d28e 100644 --- a/config/allconfig/load.go +++ b/config/allconfig/load.go @@ -214,22 +214,6 @@ func (l configLoader) normalizeCfg(cfg config.Provider) error { 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 } diff --git a/hugolib/config_test.go b/hugolib/config_test.go index 1d4372e41..24275025c 100644 --- a/hugolib/config_test.go +++ b/hugolib/config_test.go @@ -898,6 +898,59 @@ mainSections: [] } +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() |