package webapp import ( "embed" "html/template" "io" "io/fs" ) //go:embed templates var embedFS embed.FS type WebApp struct { templates *template.Template } // New creates a WebApp with templates loaded from the embedded filesystem. func New() (*WebApp, error) { sub, err := fs.Sub(embedFS, "templates") if err != nil { return nil, err } t, err := template.ParseFS(sub, "*.tmpl", "admin/*.tmpl") if err != nil { return nil, err } return &WebApp{templates: t}, nil } func Must(w *WebApp, err error) *WebApp { if err != nil { panic(err) } return w } func (w *WebApp) ExecuteTemplate(wr io.Writer, t string, data interface{}) error { return w.templates.ExecuteTemplate(wr, t, data) }