Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/gohugoio/hugo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/tpl
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2019-11-21 21:45:03 +0300
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2019-11-22 20:41:40 +0300
commitcd07e6d57b158a76f812e8c4c9567dbc84f57939 (patch)
tree2b16255aabae10b38d49f672843072f895fbf2f4 /tpl
parent628efd6e293d27984a3f5ba33522f8edd19d69d6 (diff)
Fix GetPage Params case issue
Fixes #5946
Diffstat (limited to 'tpl')
-rw-r--r--tpl/tplimpl/template_ast_transformers.go3
-rw-r--r--tpl/tplimpl/template_ast_transformers_test.go44
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: &paramsHolder{
+ 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: &paramsHolder{
+ 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) {