pink_fox/application/packages/fw/render.go

50 lines
893 B
Go

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
}