oef/util/template/template.go

57 lines
1 KiB
Go
Raw Permalink Normal View History

2019-11-04 15:00:46 +01:00
package template
import (
"crypto/sha1"
"fmt"
"io/ioutil"
"text/template"
)
func LoadTextTemplate(filename string, funcMap ...template.FuncMap) (*template.Template, error) {
var (
tpl *template.Template
err error
)
content, err := ioutil.ReadFile(filename)
if err != nil {
return nil, err
}
if len(funcMap) > 0 {
tpl, err = template.New(filename).Funcs(funcMap[0]).Parse(string(content))
if err != nil {
return nil, err
}
} else {
tpl, err = template.New(filename).Parse(string(content))
if err != nil {
return nil, err
}
}
return tpl, nil
}
func LoadTextTemplateFromString(content string, funcMap ...template.FuncMap) (*template.Template, error) {
var (
tpl *template.Template
err error
)
h := sha1.New()
h.Write([]byte(content))
name := fmt.Sprintf("%x", h.Sum(nil))
if len(funcMap) > 0 {
tpl, err = template.New(name).Funcs(funcMap[0]).Parse(content)
if err != nil {
return nil, err
}
} else {
tpl, err = template.New(name).Parse(content)
if err != nil {
return nil, err
}
}
return tpl, nil
}