48 lines
823 B
Go
48 lines
823 B
Go
|
package templates
|
||
|
|
||
|
import (
|
||
|
"embed"
|
||
|
"io"
|
||
|
"io/fs"
|
||
|
"log"
|
||
|
"strings"
|
||
|
"text/template"
|
||
|
|
||
|
"example.com/henne/template_functions"
|
||
|
)
|
||
|
|
||
|
var (
|
||
|
Templates *template.Template
|
||
|
//go:embed templates
|
||
|
Res embed.FS
|
||
|
)
|
||
|
|
||
|
func init() {
|
||
|
var err error
|
||
|
Templates, err = compileTemplates()
|
||
|
if err != nil {
|
||
|
log.Fatal(err)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func compileTemplates() (*template.Template, error) {
|
||
|
tpl := template.New("")
|
||
|
|
||
|
tpl.Funcs(template_functions.FunctionMap)
|
||
|
err := fs.WalkDir(Res, "templates", func(path string, info fs.DirEntry, err error) error {
|
||
|
if err != nil {
|
||
|
log.Fatal(err)
|
||
|
return nil
|
||
|
}
|
||
|
if info.IsDir() || !strings.HasSuffix(path, ".gohtml") {
|
||
|
return nil
|
||
|
}
|
||
|
f, _ := Res.Open(path)
|
||
|
sl, _ := io.ReadAll(f)
|
||
|
name := strings.Split(info.Name(), ".")
|
||
|
tpl.New(name[0]).Parse(string(sl))
|
||
|
return nil
|
||
|
})
|
||
|
return tpl, err
|
||
|
}
|