resources/resource: Fix GroupByParamDate with raw TOML dates

Closes #11563
This commit is contained in:
Joe Mooring 2023-11-13 13:34:41 -08:00 committed by Bjørn Erik Pedersen
parent 27620daa20
commit dd6cd6268d
2 changed files with 70 additions and 3 deletions

View file

@ -168,3 +168,66 @@ resize 2|RelPermalink: {{ $image.RelPermalink }}|MediaType: {{ $image.MediaType
"resize 2|RelPermalink: /images/pixel_hu8aa3346827e49d756ff4e630147c42b5_70_filter_6707036659822075562.jpg|MediaType: image/jpeg|Width: 20|Height: 30|", "resize 2|RelPermalink: /images/pixel_hu8aa3346827e49d756ff4e630147c42b5_70_filter_6707036659822075562.jpg|MediaType: image/jpeg|Width: 20|Height: 30|",
) )
} }
// Issue #11563
func TestGroupByParamDate(t *testing.T) {
t.Parallel()
files := `
-- config.toml --
disableKinds = ['section','rss','sitemap','taxonomy','term']
-- layouts/index.html --
{{- range site.RegularPages.GroupByParamDate "eventDate" "2006-01" }}
{{- .Key }}|{{ range .Pages }}{{ .Title }}|{{ end }}
{{- end }}
-- content/p1.md --
+++
title = 'p1'
eventDate = 2023-09-01
+++
-- content/p2.md --
+++
title = 'p2'
eventDate = '2023-09-01'
+++
-- content/p3.md --
---
title: p3
eventDate: 2023-09-01
---
-- content/p4.md --
+++
title = 'p4'
eventDate = 2023-10-01T08:00:00
+++
-- content/p5.md --
+++
title = 'p5'
eventDate = '2023-10-01T08:00:00'
+++
-- content/p6.md --
---
title: p6
eventDate: 2023-10-01T08:00:00
---
-- content/p7.md --
+++
title = 'p7'
eventDate = 2023-11-01T07:00:00-08:00
+++
-- content/p8.md --
+++
title = 'p8'
eventDate = '2023-11-01T07:00:00-08:00'
+++
-- content/p9.md --
---
title: p9
eventDate: 2023-11-01T07:00:00-08:00
---
`
b := hugolib.Test(t, files)
b.AssertFileContent("public/index.html", "2023-11|p9|p8|p7|2023-10|p6|p5|p4|2023-09|p3|p2|p1|")
}

View file

@ -18,6 +18,7 @@ import (
"time" "time"
"github.com/gohugoio/hugo/helpers" "github.com/gohugoio/hugo/helpers"
"github.com/pelletier/go-toml/v2"
"github.com/spf13/cast" "github.com/spf13/cast"
) )
@ -55,6 +56,10 @@ func getParam(r Resource, key string, stringToLower bool) any {
return cast.ToFloat64(v) return cast.ToFloat64(v)
case time.Time: case time.Time:
return val return val
case toml.LocalDate:
return val.AsTime(time.UTC)
case toml.LocalDateTime:
return val.AsTime(time.UTC)
case []string: case []string:
if stringToLower { if stringToLower {
return helpers.SliceToLower(val) return helpers.SliceToLower(val)
@ -65,6 +70,5 @@ func getParam(r Resource, key string, stringToLower bool) any {
case map[any]any: case map[any]any:
return v return v
} }
return nil return nil
} }