shithub: hugo

Download patch

ref: be58c7b9c88116094ca2b424c77210ddcccfff8e
parent: 62d031aedfc128729b460241bd99d97b5d902e62
author: Bjørn Erik Pedersen <[email protected]>
date: Sun Dec 23 16:34:17 EST 2018

tpl/transform: Include options in cache key

See #5555

--- a/parser/metadecoders/decoder.go
+++ b/parser/metadecoders/decoder.go
@@ -18,6 +18,7 @@
 	"encoding/csv"
 	"encoding/json"
 	"fmt"
+	"strings"
 
 	"github.com/gohugoio/hugo/common/herrors"
 
@@ -37,6 +38,14 @@
 	// Comment, if not 0, is the comment character ued in the CSV decoder. Lines beginning with the
 	// Comment character without preceding whitespace are ignored.
 	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.
--- a/tpl/transform/unmarshal.go
+++ b/tpl/transform/unmarshal.go
@@ -62,6 +62,10 @@
 			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 == "" {