Ver Fonte

HTML template debug mode.

- theHTML templates are reloaded each time
Manu Mtz-Almeida há 11 anos atrás
pai
commit
378610b3b2
2 ficheiros alterados com 28 adições e 13 exclusões
  1. 6 2
      gin.go
  2. 22 11
      render/render.go

+ 6 - 2
gin.go

@@ -92,8 +92,12 @@ func (engine *Engine) LoadHTMLFiles(files ...string) {
 }
 
 func (engine *Engine) SetHTMLTemplate(templ *template.Template) {
-	engine.HTMLRender = render.HTMLRender{
-		Template: templ,
+	if gin_mode == debugCode {
+		engine.HTMLRender = render.HTMLDebug
+	} else {
+		engine.HTMLRender = render.HTMLRender{
+			Template: templ,
+		}
 	}
 }
 

+ 22 - 11
render/render.go

@@ -25,6 +25,9 @@ type (
 	// Redirects
 	redirectRender struct{}
 
+	// Redirects
+	htmlDebugRender struct{}
+
 	// form binding
 	HTMLRender struct {
 		Template *template.Template
@@ -32,10 +35,11 @@ type (
 )
 
 var (
-	JSON     = jsonRender{}
-	XML      = xmlRender{}
-	Plain    = plainRender{}
-	Redirect = redirectRender{}
+	JSON      = jsonRender{}
+	XML       = xmlRender{}
+	Plain     = plainRender{}
+	Redirect  = redirectRender{}
+	HTMLDebug = htmlDebugRender{}
 )
 
 func writeHeader(w http.ResponseWriter, code int, contentType string) {
@@ -61,13 +65,6 @@ func (_ xmlRender) Render(w http.ResponseWriter, code int, data ...interface{})
 	return encoder.Encode(data[0])
 }
 
-func (html HTMLRender) Render(w http.ResponseWriter, code int, data ...interface{}) error {
-	writeHeader(w, code, "text/html")
-	file := data[0].(string)
-	obj := data[1]
-	return html.Template.ExecuteTemplate(w, file, obj)
-}
-
 func (_ plainRender) Render(w http.ResponseWriter, code int, data ...interface{}) error {
 	writeHeader(w, code, "text/plain")
 	format := data[0].(string)
@@ -80,3 +77,17 @@ func (_ plainRender) Render(w http.ResponseWriter, code int, data ...interface{}
 	}
 	return err
 }
+
+func (_ htmlDebugRender) Render(w http.ResponseWriter, code int, data ...interface{}) error {
+	writeHeader(w, code, "text/html")
+	file := data[0].(string)
+	obj := data[1]
+	return template.New(file).Execute(w, obj)
+}
+
+func (html HTMLRender) Render(w http.ResponseWriter, code int, data ...interface{}) error {
+	writeHeader(w, code, "text/html")
+	file := data[0].(string)
+	obj := data[1]
+	return html.Template.ExecuteTemplate(w, file, obj)
+}