28 lines
489 B
Go
28 lines
489 B
Go
package render
|
|
|
|
import (
|
|
"context"
|
|
"embed"
|
|
"html/template"
|
|
"io"
|
|
)
|
|
|
|
type Render struct {
|
|
fs embed.FS
|
|
t template.Template
|
|
}
|
|
|
|
func NewRender(efs embed.FS, t template.Template) Render {
|
|
tr := Render{
|
|
fs: efs,
|
|
t: t,
|
|
}
|
|
|
|
return tr
|
|
}
|
|
|
|
func (r Render) Render(ctx context.Context, w io.Writer, name string, data interface{}) error {
|
|
tmpl := template.Must(r.t.Clone())
|
|
tmpl = template.Must(tmpl.ParseFS(r.fs, "templates/"+name+".html"))
|
|
return tmpl.ExecuteTemplate(w, name, data)
|
|
}
|