shithub: hugo

Download patch

ref: 64b6b290751df01c47ff8d8fe21a3eca7a5db283
parent: bb9c2988f871ca5fe6af9c8e207ec852c631c3b3
author: Bjørn Erik Pedersen <[email protected]>
date: Wed Dec 19 05:25:53 EST 2018

tpl: Fix case handling in cast params

Fixes #5538

--- a/tpl/tplimpl/template_ast_transformers.go
+++ b/tpl/tplimpl/template_ast_transformers.go
@@ -112,11 +112,9 @@
 			c.paramsKeysToLowerForNodes(subTempl.Root)
 		}
 	case *parse.PipeNode:
-		for i, elem := range x.Decl {
-			if len(x.Cmds) > i {
-				// maps $site => .Site etc.
-				c.decl[elem.Ident[0]] = x.Cmds[i].String()
-			}
+		if len(x.Decl) == 1 && len(x.Cmds) == 1 {
+			// maps $site => .Site etc.
+			c.decl[x.Decl[0].Ident[0]] = x.Cmds[0].String()
 		}
 
 		for _, cmd := range x.Cmds {
--- a/tpl/tplimpl/template_ast_transformers_test.go
+++ b/tpl/tplimpl/template_ast_transformers_test.go
@@ -19,13 +19,16 @@
 
 	"html/template"
 
+	"github.com/spf13/cast"
+
 	"github.com/stretchr/testify/require"
 )
 
 var (
 	testFuncs = map[string]interface{}{
-		"First": func(v ...interface{}) interface{} { return v[0] },
-		"Echo":  func(v interface{}) interface{} { return v },
+		"ToTime": func(v interface{}) interface{} { return cast.ToTime(v) },
+		"First":  func(v ...interface{}) interface{} { return v[0] },
+		"Echo":   func(v interface{}) interface{} { return v },
 		"where": func(seq, key interface{}, args ...interface{}) (interface{}, error) {
 			return map[string]interface{}{
 				"ByWeight": fmt.Sprintf("%v:%v:%v", seq, key, args),
@@ -37,8 +40,9 @@
 		"NotParam": "Hi There",
 		"Slice":    []int{1, 3},
 		"Params": map[string]interface{}{
-			"lower": "P1L",
-			"slice": []int{1, 3},
+			"lower":  "P1L",
+			"slice":  []int{1, 3},
+			"mydate": "1972-01-28",
 		},
 		"Pages": map[string]interface{}{
 			"ByWeight": []int{1, 3},
@@ -142,6 +146,14 @@
 PARAMS STRING3: {{ $pages3.ByWeight }}
 {{ $first := First .Pages .Site.Params.LOWER }}
 PARAMS COMPOSITE: {{ $first.ByWeight }}
+
+
+{{ $time := $.Params.MyDate | ToTime }}
+{{ $time = $time.AddDate 0 1 0 }}
+PARAMS TIME: {{ $time.Format "2006-01-02" }}
+
+{{ $_x :=  $.Params.MyDate | ToTime }}
+PARAMS TIME2: {{ $_x.AddDate 0 1 0 }}
 `
 )
 
@@ -208,6 +220,10 @@
 
 	// Issue #5068
 	require.Contains(t, result, "PCurrentSection: pcurrentsection")
+
+	// Issue #5541
+	require.Contains(t, result, "PARAMS TIME: 1972-02-28")
+	require.Contains(t, result, "PARAMS TIME2: 1972-02-28")
 
 }