Repository: gohugoio/hugo (language: go)

Issue:
resources/page: Make Taxonomy.Get and Taxonomy.Count case-insensitive

<https://github.com/gohugoio/hugo/blob/master/resources/page/taxonomy.go#L59-L65>

For example, change this:

```go
// Get the weighted pages for the given key.
func (i Taxonomy) Get(key string) WeightedPages {
	return i[key]
}
```

To this:

```text
// Get the weighted pages for the given key.
func (i Taxonomy) Get(key string) WeightedPages {
	return i[strings.ToLower(key)]
}
```

This would allow us to do this:

```
{{ $count := site.Taxonomies.tags.Count "Bob Smith" }}
{{ $weightedPages := site.Taxonomies.tags.Get "Bob Smith" }}
```

instead of this:

```text
{{ $count := site.Taxonomies.tags.Count ("Bob Smith" | lower) }}
{{ $weightedPages := site.Taxonomies.tags.Get ("Bob Smith" | lower) }}
```


Discussion / hints:

Fix patch:
diff --git a/resources/page/taxonomy.go b/resources/page/taxonomy.go
index 66c9e6fae33..7258ec197c0 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 {


Test patch:
diff --git a/resources/page/taxonomy_integration_test.go b/resources/page/taxonomy_integration_test.go
new file mode 100644
index 00000000000..a028857cb7f
--- /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",
+	)
+}