38 lines
791 B
Go
38 lines
791 B
Go
package handlers
|
|
|
|
import (
|
|
"html/template"
|
|
"path/filepath"
|
|
)
|
|
|
|
// NewTemplateCache parses every page template once, each paired with the
|
|
// shared layout, and returns them keyed by page filename (e.g. "index.tmpl").
|
|
// Handlers look up the pre-parsed template instead of re-parsing files on
|
|
// every request.
|
|
func NewTemplateCache() (map[string]*template.Template, error) {
|
|
cache := map[string]*template.Template{}
|
|
|
|
pages, err := filepath.Glob("./ui/html/pages/*.tmpl")
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
for _, page := range pages {
|
|
name := filepath.Base(page)
|
|
|
|
files := []string{
|
|
"./ui/html/base.tmpl",
|
|
"./ui/html/navbar.tmpl",
|
|
page,
|
|
}
|
|
|
|
ts, err := template.ParseFiles(files...)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
cache[name] = ts
|
|
}
|
|
|
|
return cache, nil
|
|
}
|