/
helpers.go
49 lines (40 loc) · 1.08 KB
/
helpers.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
package views
import (
"bytes"
"html/template"
)
// TemplateRenderable defines a basic example of a Renderable
type TemplateRenderable struct {
tmpl *template.Template
cache *bytes.Buffer
}
// NewTemplateRenderable returns a new Renderable
func NewTemplateRenderable(content string) (*TemplateRenderable, error) {
tl, err := template.New("").Parse(content)
if err != nil {
return nil, err
}
tr := TemplateRenderable{
tmpl: tl,
cache: bytes.NewBuffer([]byte{}),
}
return &tr, nil
}
// Execute effects the inner template with the supplied data
func (t *TemplateRenderable) Execute(v interface{}) error {
t.cache.Reset()
err := t.tmpl.Execute(t.cache, v)
return err
}
// Render renders out the internal cache
func (t *TemplateRenderable) Render(_ ...string) string {
return string(t.cache.Bytes())
}
// RenderHTML renders the output from .Render() as safe html unescaped
func (t *TemplateRenderable) RenderHTML(_ ...string) template.HTML {
return template.HTML(t.Render())
}
// String calls the render function
func (t *TemplateRenderable) String() string {
return t.Render()
}