diff --git a/helpers/general.go b/helpers/general.go index af854041d..fa65265b8 100644 --- a/helpers/general.go +++ b/helpers/general.go @@ -27,6 +27,7 @@ import ( "unicode" "unicode/utf8" + "github.com/cespare/xxhash/v2" "github.com/spf13/afero" "github.com/jdkato/prose/transform" @@ -257,6 +258,14 @@ func SliceToLower(s []string) []string { return l } +// XxHashString takes a string and returns its xxHash hash. +func XxHashString(f string) string { + h := xxhash.New() + h.WriteString(f) + hash := h.Sum(nil) + return hex.EncodeToString(hash) +} + // MD5String takes a string and returns its MD5 hash. func MD5String(f string) string { h := md5.New() diff --git a/tpl/tplimpl/template_ast_transformers.go b/tpl/tplimpl/template_ast_transformers.go index 57730f82e..9eee64235 100644 --- a/tpl/tplimpl/template_ast_transformers.go +++ b/tpl/tplimpl/template_ast_transformers.go @@ -254,7 +254,7 @@ func (c *templateContext) handleDefer(withNode *parse.WithNode) { c.err = errors.New("resources.PostProcess cannot be used in a deferred template") return } - innerHash := helpers.MD5String(s) + innerHash := helpers.XxHashString(s) deferredID := tpl.HugoDeferredTemplatePrefix + innerHash c.deferNodes[deferredID] = inner