ref: bcb3ef74131f8119e290ddb68908ce27760a80a7
parent: 862f09babebbf6e9bc0d204ad8eabe1cdefbfcf3
author: Bjørn Erik Pedersen <[email protected]>
date: Mon Dec 26 14:30:57 EST 2016
hugolib: Fix preserveTaxonomyNames regressions Fixes #2809
--- a/hugolib/hugo_sites.go
+++ b/hugolib/hugo_sites.go
@@ -225,6 +225,9 @@
foundTaxonomyPage := false
foundTaxonomyTermsPage := false
for key := range tax {
+ if s.Info.preserveTaxonomyNames {
+ key = s.Info.pathSpec.MakePathSanitized(key)
+ }
for _, p := range taxonomyPages {
if p.sections[0] == plural && p.sections[1] == key {
foundTaxonomyPage = true
--- a/hugolib/node_as_page_test.go
+++ b/hugolib/node_as_page_test.go
@@ -33,12 +33,14 @@
*/
func TestNodesAsPage(t *testing.T) {
- for _, ugly := range []bool{false, true} {
- doTestNodeAsPage(t, ugly)
+ for _, preserveTaxonomyNames := range []bool{false, true} {
+ for _, ugly := range []bool{true, false} {
+ doTestNodeAsPage(t, ugly, preserveTaxonomyNames)
+ }
}
}
-func doTestNodeAsPage(t *testing.T, ugly bool) {
+func doTestNodeAsPage(t *testing.T, ugly, preserveTaxonomyNames bool) {
//jww.SetStdoutThreshold(jww.LevelDebug)
jww.SetStdoutThreshold(jww.LevelFatal)
@@ -55,6 +57,7 @@
testCommonResetState()
viper.Set("uglyURLs", ugly)
+ viper.Set("preserveTaxonomyNames", preserveTaxonomyNames)
writeLayoutsForNodeAsPageTests(t)
writeNodePagesForNodeAsPageTests("", t)
@@ -86,6 +89,7 @@
h := s.owner
nodes := h.findAllPagesByKindNotIn(KindPage)
+
require.Len(t, nodes, 6)
home := nodes[5] // oldest
@@ -139,6 +143,10 @@
"Lastmod: 2009-01-09",
)
+ web := s.getPage(KindTaxonomy, "categories", "web")
+ require.NotNil(t, web)
+ require.Len(t, web.Data["Pages"].(Pages), 4)
+
assertFileContent(t, expectedFilePath(ugly, "public", "categories", "web"), false,
"Taxonomy Title: Taxonomy Web",
"Taxonomy Web <strong>Content!</strong>",
@@ -728,7 +736,7 @@
Taxonomy Terms Title: {{ .Title }}
Taxonomy Terms Content: {{ .Content }}
{{ range $key, $value := .Data.Terms }}
- k/v: {{ $key }} / {{ printf "%s" $value }}
+ k/v: {{ $key | lower }} / {{ printf "%s" $value }}
{{ end }}
{{ with .Site.Menus.mymenu }}
{{ range . }}
--- a/hugolib/page.go
+++ b/hugolib/page.go
@@ -1494,6 +1494,12 @@
plural := p.sections[0]
term := p.sections[1]
+ if s.Info.preserveTaxonomyNames {
+ if v, ok := s.taxonomiesOrigKey[fmt.Sprintf("%s-%s", plural, term)]; ok {
+ term = v
+ }
+ }
+
singular := s.taxonomiesPluralSingular[plural]
taxonomy := s.Taxonomies[plural].Get(term)
--- a/hugolib/site.go
+++ b/hugolib/site.go
@@ -88,6 +88,11 @@
// to get the singular form from that value.
taxonomiesPluralSingular map[string]string
+ // This is temporary, see https://github.com/spf13/hugo/issues/2835
+ // Maps "actors-gerard-depardieu" to "Gérard Depardieu" when preserveTaxonomyNames
+ // is set.
+ taxonomiesOrigKey map[string]string
+
Source source.Input
Sections Taxonomy
Info SiteInfo
@@ -1477,8 +1482,10 @@
func (s *Site) assembleTaxonomies() {
s.Taxonomies = make(TaxonomyList)
s.taxonomiesPluralSingular = make(map[string]string)
+ s.taxonomiesOrigKey = make(map[string]string)
taxonomies := s.Language.GetStringMapString("taxonomies")
+
jww.INFO.Printf("found taxonomies: %#v\n", taxonomies)
for singular, plural := range taxonomies {
@@ -1496,10 +1503,18 @@
for _, idx := range v {
x := WeightedPage{weight.(int), p}
s.Taxonomies[plural].add(idx, x, s.Info.preserveTaxonomyNames)
+ if s.Info.preserveTaxonomyNames {
+ // Need to track the original
+ s.taxonomiesOrigKey[fmt.Sprintf("%s-%s", plural, kp(idx))] = idx
+ }
}
} else if v, ok := vals.(string); ok {
x := WeightedPage{weight.(int), p}
s.Taxonomies[plural].add(v, x, s.Info.preserveTaxonomyNames)
+ if s.Info.preserveTaxonomyNames {
+ // Need to track the original
+ s.taxonomiesOrigKey[fmt.Sprintf("%s-%s", plural, kp(v))] = v
+ }
} else {
jww.ERROR.Printf("Invalid %s in %s\n", plural, p.File.Path())
}