Skip to content

Commit 90edfc0

Browse files
committed
Initial Renderer implementation
1 parent 811f8ad commit 90edfc0

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed

renderer.go

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package veun
2+
3+
import (
4+
"bytes"
5+
"fmt"
6+
"html/template"
7+
)
8+
9+
type RenderFunc func(r Renderable) (template.HTML, error)
10+
11+
type Renderable interface {
12+
Template() (*template.Template, error)
13+
TemplateData() (any, error)
14+
}
15+
16+
func Render(r Renderable) (template.HTML, error) {
17+
var empty template.HTML
18+
19+
tpl, err := r.Template()
20+
if err != nil {
21+
return empty, err
22+
}
23+
24+
if tpl == nil {
25+
return empty, fmt.Errorf("missing template")
26+
}
27+
28+
data, err := r.TemplateData()
29+
if err != nil {
30+
return empty, err
31+
}
32+
33+
var bs bytes.Buffer
34+
if err := tpl.Execute(&bs, data); err != nil {
35+
return empty, err
36+
}
37+
38+
return template.HTML(bs.String()), nil
39+
}

0 commit comments

Comments
 (0)