From 3f217fd6647b859b828b2ab1798177bebda64a9a Mon Sep 17 00:00:00 2001 From: Joe Mooring Date: Thu, 29 Feb 2024 11:18:35 -0800 Subject: resources/page: Make Taxonomy.Get and Taxonomy.Count case-insensitive Closes #12177 --- resources/page/taxonomy.go | 5 +-- resources/page/taxonomy_integration_test.go | 55 +++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+), 2 deletions(-) create mode 100644 resources/page/taxonomy_integration_test.go 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", + ) +} -- cgit v1.2.3