Skip to content

Example to use args and kwargs function in template. #18

@prasad83

Description

@prasad83

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

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions