more file stuff

This commit is contained in:
kekskurse 2025-03-01 15:16:40 +01:00
parent ef674d9074
commit 835c62ef64

View file

@ -5,11 +5,13 @@ import (
"embed"
"html/template"
"io"
"io/fs"
)
type Render struct {
fs embed.FS
t *template.Template
FileExtension string
}
type Data map[string]interface{}
@ -23,8 +25,32 @@ func NewRender(efs embed.FS, t *template.Template) Render {
return tr
}
func NewRenderWithoutTemplate(ets embed.FS) (Render, error) {
tmpl, err := template.ParseFS(ets, "templates/*")
if err != nil {
return Render{}, err
}
r := NewRender(ets, tmpl)
return r, nil
}
func (r Render) Render(ctx context.Context, w io.Writer, name string, data interface{}) error {
tmpl := template.Must(r.t.Clone())
_, err := fs.Stat(r.fs, "templates/"+name+".txt")
if err == nil {
tmpl = template.Must(tmpl.ParseFS(r.fs, "templates/"+name+".txt"))
}
_, err = fs.Stat(r.fs, "templates/"+name+".html")
if err == nil {
tmpl = template.Must(tmpl.ParseFS(r.fs, "templates/"+name+".html"))
}
_, err = fs.Stat(r.fs, "templates/"+name)
if err == nil {
tmpl = template.Must(tmpl.ParseFS(r.fs, "templates/"+name))
}
return tmpl.ExecuteTemplate(w, name, data)
}
func (r Render) RenderToString(ctx context.Context, name string, data interface{}) (string, error) {
}