diff options
author | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2023-01-16 16:29:42 +0100 |
---|---|---|
committer | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2023-01-17 08:58:05 +0100 |
commit | 21af5b359f020ed19558141ffa309fd2ff381c6c (patch) | |
tree | aac7fce3a348c285217f3434a54f9ed38d021c4e /hugolib/page__meta.go | |
parent | f38a2fbd2e4de7f095a833b448cb8bc053955ce2 (diff) |
Preserve front matter slice value types (e.g. int)
Fixes #10624
Diffstat (limited to 'hugolib/page__meta.go')
-rw-r--r-- | hugolib/page__meta.go | 51 |
1 files changed, 20 insertions, 31 deletions
diff --git a/hugolib/page__meta.go b/hugolib/page__meta.go index 8d2495ddc..bb038a1d9 100644 --- a/hugolib/page__meta.go +++ b/hugolib/page__meta.go @@ -579,41 +579,30 @@ func (pm *pageMeta) setMetadata(parentBucket *pagesMapBucket, p *pageState, fron default: // If not one of the explicit values, store in Params switch vv := v.(type) { - case bool: - pm.params[loki] = vv - case string: - pm.params[loki] = vv - case int64, int32, int16, int8, int: - pm.params[loki] = vv - case float64, float32: - pm.params[loki] = vv - case time.Time: - pm.params[loki] = vv - default: // handle array of strings as well - switch vvv := vv.(type) { - case []any: - if len(vvv) > 0 { - switch vvv[0].(type) { - case map[any]any: - pm.params[loki] = vvv - case map[string]any: - pm.params[loki] = vvv - case []any: - pm.params[loki] = vvv - default: - a := make([]string, len(vvv)) - for i, u := range vvv { - a[i] = cast.ToString(u) - } - - pm.params[loki] = a + case []any: + if len(vv) > 0 { + allStrings := true + for _, vvv := range vv { + if _, ok := vvv.(string); !ok { + allStrings = false + break } + } + if allStrings { + // We need tags, keywords etc. to be []string, not []interface{}. + a := make([]string, len(vv)) + for i, u := range vv { + a[i] = cast.ToString(u) + } + pm.params[loki] = a } else { - pm.params[loki] = []string{} + pm.params[loki] = vv } - default: - pm.params[loki] = vv + } else { + pm.params[loki] = []string{} } + default: + pm.params[loki] = vv } } } |