summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoe Mooring <joe.mooring@veriphor.com>2024-02-29 11:18:35 -0800
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2024-03-01 12:09:00 +0100
commit3f217fd6647b859b828b2ab1798177bebda64a9a (patch)
tree7a39cddb81cef6284988fe80cf4d9198b626921c
parent92684f9a26838a46d1a81e3c250fef5207bcb735 (diff)
resources/page: Make Taxonomy.Get and Taxonomy.Count case-insensitive
Closes #12177
-rw-r--r--resources/page/taxonomy.go5
-rw-r--r--resources/page/taxonomy_integration_test.go55
2 files changed, 58 insertions, 2 deletions
diff --git a/resources/page/taxonomy.go b/resources/page/taxonomy.go
index 66c9e6fae..7258ec197 100644
--- a/resources/page/taxonomy.go
+++ b/resources/page/taxonomy.go
@@ -16,6 +16,7 @@ package page
import (
"fmt"
"sort"
+ "strings"
"github.com/gohugoio/hugo/compare"
"github.com/gohugoio/hugo/langs"
@@ -58,11 +59,11 @@ type OrderedTaxonomyEntry struct {
// Get the weighted pages for the given key.
func (i Taxonomy) Get(key string) WeightedPages {
- return i[key]
+ return i[strings.ToLower(key)]
}
// Count the weighted pages for the given key.
-func (i Taxonomy) Count(key string) int { return len(i[key]) }
+func (i Taxonomy) Count(key string) int { return len(i[strings.ToLower(key)]) }
// TaxonomyArray returns an ordered taxonomy with a non defined order.
func (i Taxonomy) TaxonomyArray() OrderedTaxonomy {
diff --git a/resources/page/taxonomy_integration_test.go b/resources/page/taxonomy_integration_test.go
new file mode 100644
index 000000000..a028857cb
--- /dev/null
+++ b/resources/page/taxonomy_integration_test.go
@@ -0,0 +1,55 @@
+// Copyright 2024 The Hugo Authors. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package page_test
+
+import (
+ "testing"
+
+ "github.com/gohugoio/hugo/hugolib"
+)
+
+func TestTaxonomiesGetAndCount(t *testing.T) {
+ t.Parallel()
+
+ files := `
+-- hugo.toml --
+disableKinds = ['rss','sitemap']
+[taxonomies]
+author = 'authors'
+-- layouts/_default/home.html --
+John Smith count: {{ site.Taxonomies.authors.Count "John Smith" }}
+Robert Jones count: {{ (site.Taxonomies.authors.Get "Robert Jones").Pages.Len }}
+-- layouts/_default/single.html --
+{{ .Title }}|
+-- layouts/_default/list.html --
+{{ .Title }}|
+-- content/p1.md --
+---
+title: p1
+authors: [John Smith,Robert Jones]
+---
+-- content/p2.md --
+---
+title: p2
+authors: [John Smith]
+---
+`
+
+ b := hugolib.Test(t, files)
+
+ b.AssertFileContent("public/index.html",
+ "John Smith count: 2",
+ "Robert Jones count: 1",
+ )
+}