hugo

Unnamed repository; edit this file 'description' to name the repository.

git clone git://git.shimmy1996.com/hugo.git
commit be58c7b9c88116094ca2b424c77210ddcccfff8e
parent 62d031aedfc128729b460241bd99d97b5d902e62
Author: Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Date:   Sun, 23 Dec 2018 21:34:17 +0100

tpl/transform: Include options in cache key

See #5555

Diffstat:
Mparser/metadecoders/decoder.go | 9+++++++++
Mtpl/transform/unmarshal.go | 4++++
2 files changed, 13 insertions(+), 0 deletions(-)
diff --git 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
@@ -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 == "" {