Make language merging of markup etc. config without values in the root - hugo - [fork] hugo port for 9front
HTML git clone git@git.drkhsh.at/hugo.git
DIR Log
DIR Files
DIR Refs
DIR Submodules
DIR README
DIR LICENSE
---
DIR commit 4f085e80da9a415725db3def70e5ce847cf06741
DIR parent 150d190ff041f7da905afea7f3b9ca6bd4a31a48
HTML Author: Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Date: Sat, 20 May 2023 11:17:43 +0200
Make language merging of markup etc. config without values in the root
Updates #10953
Diffstat:
M config/allconfig/allconfig.go | 9 +++++++--
M config/allconfig/load.go | 16 ----------------
M hugolib/config_test.go | 53 ++++++++++++++++++++++++++++++
3 files changed, 60 insertions(+), 18 deletions(-)
---
DIR diff --git 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)
DIR diff --git 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
}
DIR diff --git 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()