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