mirror of
https://github.com/gin-gonic/gin.git
synced 2025-10-15 04:57:07 +08:00
49 lines
929 B
Go
49 lines
929 B
Go
package main
|
|
|
|
import (
|
|
"github.com/flosch/pongo2"
|
|
"github.com/gin-gonic/gin/render"
|
|
"net/http"
|
|
)
|
|
|
|
type NgHTML struct {
|
|
Template map[string]*pongo2.Template
|
|
Name string
|
|
Data interface{}
|
|
}
|
|
|
|
func (n NgHTML) Write(w http.ResponseWriter) error {
|
|
file := n.Name
|
|
ctx := n.Data.(pongo2.Context)
|
|
|
|
var t *pongo2.Template
|
|
|
|
if tmpl, ok := n.Template[file]; ok {
|
|
t = tmpl
|
|
} else {
|
|
tmpl, err := pongo2.FromFile(file)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
n.Template[file] = tmpl
|
|
t = tmpl
|
|
}
|
|
w.Header().Set("Content-Type", "text/html; charset=utf-8")
|
|
return t.ExecuteWriter(ctx, w)
|
|
}
|
|
|
|
type NgPongRender struct {
|
|
Template map[string]*pongo2.Template
|
|
}
|
|
|
|
func (n *NgPongRender) Instance(name string, data interface{}) render.Render {
|
|
return NgHTML{
|
|
Template: n.Template,
|
|
Name: name,
|
|
Data: data,
|
|
}
|
|
}
|
|
func NewNgPongRender() *NgPongRender {
|
|
return &NgPongRender{Template: map[string]*pongo2.Template{}}
|
|
}
|