diff options
Diffstat (limited to 'src/templates.go')
-rw-r--r-- | src/templates.go | 39 |
1 files changed, 24 insertions, 15 deletions
diff --git a/src/templates.go b/src/templates.go index 8479759..de1f081 100644 --- a/src/templates.go +++ b/src/templates.go @@ -8,6 +8,8 @@ import ( "strings" "git.thomasvoss.com/euro-cash.eu/src/dbx" + . "git.thomasvoss.com/euro-cash.eu/src/try" + "git.thomasvoss.com/euro-cash.eu/src/watch" ) type templateData struct { @@ -31,29 +33,36 @@ var ( } ) -func BuildTemplates(dir fs.FS) { - ents, err := fs.ReadDir(dir, ".") - if err != nil { - log.Fatal(err) - } - +func BuildTemplates(dir fs.FS, debugp bool) { + ents := Try2(fs.ReadDir(dir, ".")) notFoundTmpl = buildTemplate(dir, "-404") errorTmpl = buildTemplate(dir, "-error") - templates = make(map[string]*template.Template, len(ents)) + for _, e := range ents { - path := "/" - name := strings.TrimSuffix(e.Name(), ".html.tmpl") - switch { - case name[0] == '-': - continue - case name != "index": - path += strings.ReplaceAll(name, "-", "/") + name := e.Name() + buildAndSetTemplate(dir, name) + if debugp { + go watch.FileFS(dir, name, func() { + buildAndSetTemplate(dir, name) + log.Printf("Template ā%sā updated\n", name) + }) } - templates[path] = buildTemplate(dir, name) } } +func buildAndSetTemplate(dir fs.FS, name string) { + path := "/" + name = strings.TrimSuffix(name, ".html.tmpl") + switch { + case name[0] == '-': + return + case name != "index": + path += strings.ReplaceAll(name, "-", "/") + } + templates[path] = buildTemplate(dir, name) +} + func buildTemplate(dir fs.FS, name string) *template.Template { names := [...]string{"-base", "-navbar", name} for i, s := range names { |