...
1 package multitemplate
2
3 import (
4 "html/template"
5
6 "github.com/gin-gonic/gin/render"
7 )
8
9 type Render map[string]*template.Template
10
11 var _ render.HTMLRender = Render{}
12
13 func New() Render {
14 return make(Render)
15 }
16
17 func (r Render) Add(name string, tmpl *template.Template) {
18 if tmpl == nil {
19 panic("template can not be nil")
20 }
21 if len(name) == 0 {
22 panic("template name cannot be empty")
23 }
24 r[name] = tmpl
25 }
26
27 func (r Render) AddFromFiles(name string, files ...string) *template.Template {
28 tmpl := template.Must(template.ParseFiles(files...))
29 r.Add(name, tmpl)
30 return tmpl
31 }
32
33 func (r Render) AddFromGlob(name, glob string) *template.Template {
34 tmpl := template.Must(template.ParseGlob(glob))
35 r.Add(name, tmpl)
36 return tmpl
37 }
38
39 func (r *Render) AddFromString(name, templateString string) *template.Template {
40 tmpl := template.Must(template.New("").Parse(templateString))
41 r.Add(name, tmpl)
42 return tmpl
43 }
44
45 func (r Render) Instance(name string, data interface{}) render.Render {
46 return render.HTML{
47 Template: r[name],
48 Data: data,
49 }
50 }
51
View as plain text