package fw import ( "bytes" "github.com/CloudyKit/jet/v6" "io" "net/http" ) type JetTemplate struct { set *jet.Set } func NewJetTemplate(path string) *JetTemplate { return &JetTemplate{ set: jet.NewSet(jet.NewOSFileSystemLoader(path)), } } type JetRender struct { engine *JetTemplate Writer http.ResponseWriter Variables jet.VarMap } func NewJetRender(engine *JetTemplate, writer http.ResponseWriter, variables jet.VarMap) *JetRender { return &JetRender{ engine: engine, Writer: writer, Variables: variables, } } func (it *JetRender) Render(template string, data any) Error { tpl, err := it.engine.set.GetTemplate(template) if err != nil { return Err(err) } var buf bytes.Buffer err = tpl.Execute(&buf, it.Variables, data) if err != nil { return Err(err) } _, err = io.Copy(it.Writer, &buf) if err != nil { return Err(err) } return nil }