49 lines
978 B
Go
49 lines
978 B
Go
package template
|
|
|
|
import (
|
|
"strings"
|
|
"text/template"
|
|
)
|
|
|
|
type Template struct {
|
|
GlobTemplate *template.Template
|
|
}
|
|
|
|
var DefaultFuncMap = template.FuncMap{
|
|
"hd": hd,
|
|
"title": strings.Title,
|
|
"join": strings.Join,
|
|
"list": func(strs []string) string { return strings.Join(strs, ",") },
|
|
"cmd2func": func(str string) string {
|
|
splits := strings.Split(str, "/")
|
|
return splits[len(splits)-1]
|
|
},
|
|
}
|
|
|
|
func hd(str []string) string {
|
|
return str[0]
|
|
}
|
|
|
|
func NewTemplate() *Template {
|
|
return &Template{}
|
|
}
|
|
|
|
func (t *Template) ParseGlob(pattern string) error {
|
|
parse, err := template.New("").
|
|
Funcs(DefaultFuncMap).ParseGlob(pattern)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
t.GlobTemplate = template.Must(parse, nil)
|
|
return nil
|
|
}
|
|
|
|
func (t *Template) ExecuteTemplate(templateName2 string, data interface{}) (string, error) {
|
|
var buf strings.Builder
|
|
err := t.GlobTemplate.ExecuteTemplate(&buf, templateName2, data)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
return buf.String(), nil
|
|
}
|