123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- package ginpongo2
- import (
- "fmt"
- "github.com/flosch/pongo2"
- "github.com/gin-gonic/gin/render"
- "net/http"
- )
- var Suffix = ".html.twig"
- type Pongo struct {
- set *pongo2.TemplateSet
- }
- func (p *Pongo) Instance(name string, data interface{}) render.Render {
- r := new(PongoRenderer)
- tpl, e := p.set.FromCache(fmt.Sprintf("%s%s", name, Suffix))
- if e != nil {
- panic(e)
- }
- r.tpl = tpl
- r.data = data
- return r
- }
- type PongoRenderer struct {
- tpl *pongo2.Template
- data interface{}
- }
- func (r *PongoRenderer) Render(w http.ResponseWriter) error {
- if r.data == nil {
- r.data = make(pongo2.Context)
- }
- d := r.data.(pongo2.Context)
- return r.tpl.ExecuteWriter(d, w)
- }
- func (r *PongoRenderer) WriteContentType(w http.ResponseWriter) {
- if v := w.Header().Get("content-type"); len(v) == 0 {
- w.Header().Set("content-type", "text/html; charset=utf8")
- }
- }
- func New(debug bool, loaders ...pongo2.TemplateLoader) *Pongo {
- p := new(Pongo)
- p.set = pongo2.NewSet("html", loaders...)
- p.set.Debug = debug
- return p
- }
|