51 lines
1.0 KiB
Go
51 lines
1.0 KiB
Go
|
package multitemplate
|
||
|
|
||
|
import (
|
||
|
"html/template"
|
||
|
|
||
|
"github.com/gin-gonic/gin/render"
|
||
|
)
|
||
|
|
||
|
type Render map[string]*template.Template
|
||
|
|
||
|
var _ render.HTMLRender = Render{}
|
||
|
|
||
|
func New() Render {
|
||
|
return make(Render)
|
||
|
}
|
||
|
|
||
|
func (r Render) Add(name string, tmpl *template.Template) {
|
||
|
if tmpl == nil {
|
||
|
panic("template can not be nil")
|
||
|
}
|
||
|
if len(name) == 0 {
|
||
|
panic("template name cannot be empty")
|
||
|
}
|
||
|
r[name] = tmpl
|
||
|
}
|
||
|
|
||
|
func (r Render) AddFromFiles(name string, files ...string) *template.Template {
|
||
|
tmpl := template.Must(template.ParseFiles(files...))
|
||
|
r.Add(name, tmpl)
|
||
|
return tmpl
|
||
|
}
|
||
|
|
||
|
func (r Render) AddFromGlob(name, glob string) *template.Template {
|
||
|
tmpl := template.Must(template.ParseGlob(glob))
|
||
|
r.Add(name, tmpl)
|
||
|
return tmpl
|
||
|
}
|
||
|
|
||
|
func (r *Render) AddFromString(name, templateString string) *template.Template {
|
||
|
tmpl := template.Must(template.New("").Parse(templateString))
|
||
|
r.Add(name, tmpl)
|
||
|
return tmpl
|
||
|
}
|
||
|
|
||
|
func (r Render) Instance(name string, data interface{}) render.Render {
|
||
|
return render.HTML{
|
||
|
Template: r[name],
|
||
|
Data: data,
|
||
|
}
|
||
|
}
|