-
Notifications
You must be signed in to change notification settings - Fork 22
Open
Description
In this example, merge_all function will be defined to receive args and kwargs arguments.
tpl, _ := gonja.FromString("<h1>{{merge_all('jack', 'jill', 'jimmy', went='up-the-hill')}}</h1>")
if data, e := tpl.Execute(gonja.Context{
"merge_all": func(name *exec.VarArgs) (string, error) {
vals := make([]string, 0)
l := len(name.Args)
for i, v := range name.Args {
if i == l-1 {
vals = append(vals, "and")
} else if i > 0 {
vals = append(vals, ",")
}
vals = append(vals, fmt.Sprintf("%v", v.Val))
}
for k, v := range name.KwArgs {
vals = append(vals, fmt.Sprintf("%v %v", k, v.Val))
}
return strings.Join(vals, " "), nil
},
}); e != nil {
fmt.Println(e.Error())
fmt.Println(errors.Unwrap(e))
} else {
fmt.Println(data)
}Metadata
Metadata
Assignees
Labels
No labels