1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- 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
- }
|