Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/gohugoio/hugo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2016-08-10 23:46:02 +0300
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2016-09-06 18:32:20 +0300
commitd8a256c155d23ad451625fcb292b297d85888c4c (patch)
treeed3e7218c7b819b31dc62bb177baa011cf6c61c9 /hugolib
parent446e606a098aeacbaaf89a53c7addd33cd888a74 (diff)
Fix YAML loading of multilingual config
And some other minor fixes from code review. Updates #2309
Diffstat (limited to 'hugolib')
-rw-r--r--hugolib/hugo_sites.go4
-rw-r--r--hugolib/hugo_sites_test.go67
-rw-r--r--hugolib/multilingual.go6
-rw-r--r--hugolib/site.go2
4 files changed, 70 insertions, 9 deletions
diff --git a/hugolib/hugo_sites.go b/hugolib/hugo_sites.go
index 8e97e0783..d05415d98 100644
--- a/hugolib/hugo_sites.go
+++ b/hugolib/hugo_sites.go
@@ -385,9 +385,9 @@ func (h *HugoSites) setupTranslations(master *Site) {
}
}
-// preRender performs build tasks that needs to be done as late as possible.
+// preRender performs build tasks that need to be done as late as possible.
// Shortcode handling is the main task in here.
-// TODO(bep) We need to look at the whole handler-chain construct witht he below in mind.
+// TODO(bep) We need to look at the whole handler-chain construct with he below in mind.
func (h *HugoSites) preRender() error {
for _, s := range h.Sites {
diff --git a/hugolib/hugo_sites_test.go b/hugolib/hugo_sites_test.go
index 26a294d5e..c5a226dc2 100644
--- a/hugolib/hugo_sites_test.go
+++ b/hugolib/hugo_sites_test.go
@@ -160,9 +160,22 @@ func assertFileContent(t *testing.T, filename string, defaultInSubDir bool, matc
}
}
+//
func TestMultiSitesBuild(t *testing.T) {
+ for _, config := range []struct {
+ content string
+ suffix string
+ }{
+ {multiSiteTomlConfig, "toml"},
+ {multiSiteYAMLConfig, "yml"},
+ } {
+ doTestMultiSitesBuild(t, config.content, config.suffix)
+ }
+}
+
+func doTestMultiSitesBuild(t *testing.T, configContent, configSuffix string) {
testCommonResetState()
- sites := createMultiTestSites(t, multiSiteTomlConfig)
+ sites := createMultiTestSitesForConfig(t, configContent, configSuffix)
err := sites.Build(BuildCfg{})
@@ -598,7 +611,54 @@ title = "Bokmål"
lag = "lag"
`
+var multiSiteYAMLConfig = `
+DefaultExtension: "html"
+baseurl: "http://example.com/blog"
+DisableSitemap: false
+DisableRSS: false
+RSSUri: "index.xml"
+
+paginate: 1
+DefaultContentLanguage: "fr"
+
+permalinks:
+ other: "/somewhere/else/:filename"
+
+blackfriday:
+ angledQuotes: true
+
+Taxonomies:
+ tag: "tags"
+
+Languages:
+ en:
+ weight: 10
+ title: "English"
+ blackfriday:
+ angledQuotes: false
+ fr:
+ weight: 20
+ title: "Français"
+ Taxonomies:
+ plaque: "plaques"
+ nn:
+ weight: 30
+ title: "Nynorsk"
+ Taxonomies:
+ lag: "lag"
+ nb:
+ weight: 40
+ title: "Bokmål"
+ Taxonomies:
+ lag: "lag"
+
+`
+
func createMultiTestSites(t *testing.T, tomlConfig string) *HugoSites {
+ return createMultiTestSitesForConfig(t, tomlConfig, "toml")
+}
+
+func createMultiTestSitesForConfig(t *testing.T, configContent, configSuffix string) *HugoSites {
// Add some layouts
if err := afero.WriteFile(hugofs.Source(),
@@ -760,8 +820,9 @@ lag:
`)},
}
- writeSource(t, "multilangconfig.toml", tomlConfig)
- if err := LoadGlobalConfig("", "multilangconfig.toml"); err != nil {
+ configFile := "multilangconfig." + configSuffix
+ writeSource(t, configFile, configContent)
+ if err := LoadGlobalConfig("", configFile); err != nil {
t.Fatalf("Failed to load config: %s", err)
}
diff --git a/hugolib/multilingual.go b/hugolib/multilingual.go
index c59b3b649..493a8e8a3 100644
--- a/hugolib/multilingual.go
+++ b/hugolib/multilingual.go
@@ -83,10 +83,10 @@ func toSortedLanguages(l map[string]interface{}) (helpers.Languages, error) {
i := 0
for lang, langConf := range l {
- langsMap, ok := langConf.(map[string]interface{})
+ langsMap, err := cast.ToStringMapE(langConf)
- if !ok {
- return nil, fmt.Errorf("Language config is not a map: %v", langsMap)
+ if err != nil {
+ return nil, fmt.Errorf("Language config is not a map: %T", langConf)
}
language := helpers.NewLanguage(lang)
diff --git a/hugolib/site.go b/hugolib/site.go
index 8403a6af0..94c9efab7 100644
--- a/hugolib/site.go
+++ b/hugolib/site.go
@@ -777,7 +777,7 @@ func (s *Site) setupPrevNext() {
}
func (s *Site) render() (err error) {
- // There are sadly some global template funcs etc. that needs the language information.
+ // There are sadly some global template funcs etc. that need the language information.
viper.Set("Multilingual", s.multilingualEnabled())
viper.Set("CurrentContentLanguage", s.Language)
if err = tpl.SetTranslateLang(s.Language.Lang); err != nil {