From: Bjørn Erik Pedersen Date: Sun, 23 Dec 2018 20:34:17 +0000 (+0100) Subject: tpl/transform: Include options in cache key X-Git-Tag: v0.53~4 X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=be58c7b9c88116094ca2b424c77210ddcccfff8e;p=brevno-suite%2Fhugo tpl/transform: Include options in cache key See #5555 --- diff --git a/parser/metadecoders/decoder.go b/parser/metadecoders/decoder.go index 2f3c27d4..b2d8307b 100644 --- a/parser/metadecoders/decoder.go +++ b/parser/metadecoders/decoder.go @@ -18,6 +18,7 @@ import ( "encoding/csv" "encoding/json" "fmt" + "strings" "github.com/gohugoio/hugo/common/herrors" @@ -39,6 +40,14 @@ type Decoder struct { Comment rune } +// OptionsKey is used in cache keys. +func (d Decoder) OptionsKey() string { + var sb strings.Builder + sb.WriteRune(d.Delimiter) + sb.WriteRune(d.Comment) + return sb.String() +} + // Default is a Decoder in its default configuration. var Default = Decoder{ Delimiter: ',', diff --git a/tpl/transform/unmarshal.go b/tpl/transform/unmarshal.go index bc838697..c27a21a9 100644 --- a/tpl/transform/unmarshal.go +++ b/tpl/transform/unmarshal.go @@ -62,6 +62,10 @@ func (ns *Namespace) Unmarshal(args ...interface{}) (interface{}, error) { return nil, errors.New("no Key set in Resource") } + if decoder != metadecoders.Default { + key += decoder.OptionsKey() + } + return ns.cache.GetOrCreate(key, func() (interface{}, error) { f := metadecoders.FormatFromMediaType(r.MediaType()) if f == "" {