mirror of
https://github.com/gohugoio/hugo.git
synced 2024-12-26 06:21:06 +00:00
tpl/collections: Fix apply with namespaced template funcs
We changed the signature to `func(...interface{}) (interface{}, error)` some time ago, but sadly we had no test for this for `apply`. Now we do. Fixes #9393
This commit is contained in:
parent
348d300a71
commit
2655739940
2 changed files with 29 additions and 4 deletions
|
@ -460,7 +460,6 @@ complex: 80: 80
|
|||
|
||||
// Issue 7528
|
||||
func TestPartialWithZeroedArgs(t *testing.T) {
|
||||
|
||||
b := newTestSitesBuilder(t)
|
||||
b.WithTemplatesAdded("index.html",
|
||||
`
|
||||
|
@ -483,7 +482,6 @@ X123X
|
|||
X123X
|
||||
X123X
|
||||
`)
|
||||
|
||||
}
|
||||
|
||||
func TestPartialCached(t *testing.T) {
|
||||
|
@ -757,3 +755,20 @@ This is single main
|
|||
`,
|
||||
)
|
||||
}
|
||||
|
||||
// Issue 9393.
|
||||
func TestApplyWithNamespace(t *testing.T) {
|
||||
b := newTestSitesBuilder(t)
|
||||
|
||||
b.WithTemplates(
|
||||
"index.html", `
|
||||
{{ $b := slice " a " " b " " c" }}
|
||||
{{ $a := apply $b "strings.Trim" "." " " }}
|
||||
a: {{ $a }}
|
||||
`,
|
||||
).WithContent("p1.md", "")
|
||||
|
||||
b.Build(BuildCfg{})
|
||||
|
||||
b.AssertFileContent("public/index.html", `a: [a b c]`)
|
||||
}
|
||||
|
|
|
@ -111,15 +111,25 @@ func (ns *Namespace) lookupFunc(fname string) (reflect.Value, bool) {
|
|||
|
||||
ss := strings.SplitN(fname, ".", 2)
|
||||
|
||||
// namespace
|
||||
// Namespace
|
||||
nv, found := ns.lookupFunc(ss[0])
|
||||
if !found {
|
||||
return reflect.Value{}, false
|
||||
}
|
||||
|
||||
fn, ok := nv.Interface().(func(...interface{}) (interface{}, error))
|
||||
if !ok {
|
||||
return reflect.Value{}, false
|
||||
}
|
||||
v, err := fn()
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
nv = reflect.ValueOf(v)
|
||||
|
||||
// method
|
||||
m := nv.MethodByName(ss[1])
|
||||
// if reflect.DeepEqual(m, reflect.Value{}) {
|
||||
|
||||
if m.Kind() == reflect.Invalid {
|
||||
return reflect.Value{}, false
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue