50 lines
893 B
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
|
|
}
|