ref: 64b6b290751df01c47ff8d8fe21a3eca7a5db283
parent: bb9c2988f871ca5fe6af9c8e207ec852c631c3b3
author: Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
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")
}
--
⑨