diff options
author | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2019-11-21 19:45:03 +0100 |
---|---|---|
committer | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2019-11-22 18:41:40 +0100 |
commit | cd07e6d57b158a76f812e8c4c9567dbc84f57939 (patch) | |
tree | 2b16255aabae10b38d49f672843072f895fbf2f4 /tpl | |
parent | 628efd6e293d27984a3f5ba33522f8edd19d69d6 (diff) |
Fix GetPage Params case issue
Fixes #5946
Diffstat (limited to 'tpl')
-rw-r--r-- | tpl/tplimpl/template_ast_transformers.go | 3 | ||||
-rw-r--r-- | tpl/tplimpl/template_ast_transformers_test.go | 44 |
2 files changed, 42 insertions, 5 deletions
diff --git a/tpl/tplimpl/template_ast_transformers.go b/tpl/tplimpl/template_ast_transformers.go index fb0728a63..d257d7a31 100644 --- a/tpl/tplimpl/template_ast_transformers.go +++ b/tpl/tplimpl/template_ast_transformers.go @@ -508,8 +508,7 @@ func (d decl) resolveVariables(idents []string) ([]string, bool) { } if !d.isKeyword(replacement) { - // This can not be .Site.Params etc. - return nil, false + continue } replacement = strings.TrimPrefix(replacement, ".") diff --git a/tpl/tplimpl/template_ast_transformers_test.go b/tpl/tplimpl/template_ast_transformers_test.go index 39b5c460a..682af2772 100644 --- a/tpl/tplimpl/template_ast_transformers_test.go +++ b/tpl/tplimpl/template_ast_transformers_test.go @@ -26,6 +26,19 @@ import ( qt "github.com/frankban/quicktest" ) +type paramsHolder struct { + params map[string]interface{} + page *paramsHolder +} + +func (p paramsHolder) Params() map[string]interface{} { + return p.params +} + +func (p paramsHolder) GetPage(arg string) *paramsHolder { + return p.page +} + var ( testFuncs = map[string]interface{}{ "getif": func(v interface{}) interface{} { return v }, @@ -37,16 +50,22 @@ var ( "ByWeight": fmt.Sprintf("%v:%v:%v", seq, key, args), }, nil }, - "site": func() interface{} { - return map[string]interface{}{ - "Params": map[string]interface{}{ + "site": func() paramsHolder { + return paramsHolder{ + params: map[string]interface{}{ "lower": "global-site", }, + page: ¶msHolder{ + params: map[string]interface{}{ + "lower": "page", + }, + }, } }, } paramsData = map[string]interface{}{ + "NotParam": "Hi There", "Slice": []int{1, 3}, "Params": map[string]interface{}{ @@ -81,6 +100,16 @@ var ( }, }, }, + "Site2": paramsHolder{ + params: map[string]interface{}{ + "lower": "global-site", + }, + page: ¶msHolder{ + params: map[string]interface{}{ + "lower": "page", + }, + }, + }, } paramsTempl = ` @@ -170,6 +199,11 @@ PARAMS SITE GLOBAL1: {{ site.Params.LOwER }} {{ $site := site }} PARAMS SITE GLOBAL2: {{ $lower }} PARAMS SITE GLOBAL3: {{ $site.Params.LOWER }} + +{{ $p := $site.GetPage "foo" }} +PARAMS GETPAGE: {{ $p.Params.LOWER }} +{{ $p := .Site2.GetPage "foo" }} +PARAMS GETPAGE2: {{ $p.Params.LOWER }} ` ) @@ -248,6 +282,10 @@ func TestParamsKeysToLower(t *testing.T) { c.Assert(result, qt.Contains, "PARAMS SITE GLOBAL2: global-site") c.Assert(result, qt.Contains, "PARAMS SITE GLOBAL3: global-site") + // + c.Assert(result, qt.Contains, "PARAMS GETPAGE: page") + c.Assert(result, qt.Contains, "PARAMS GETPAGE2: page") + } func BenchmarkTemplateParamsKeysToLower(b *testing.B) { |