package template import ( "strings" "text/template" ) // funcMap defines functions for our template system. var funcMap = template.FuncMap{ "join": func(s ...string) string { // first arg is sep, remaining args are strings to join return strings.Join(s[1:], s[0]) }, } func newTemplate(s string, extraFuncs template.FuncMap) (*template.Template, error) { tmpl := template.New("expansion").Option("missingkey=error").Funcs(funcMap) if len(extraFuncs) != 0 { tmpl = tmpl.Funcs(extraFuncs) } return tmpl.Parse(s) }