From ad70fbf73aee6c21cfd6b4cfa3bc3ce86ff23054 Mon Sep 17 00:00:00 2001 From: Danny Hermes Date: Tue, 8 Feb 2022 18:51:30 -0600 Subject: [PATCH] Add `Engine.LoadHTMLFromFS()` method to support `go:embed` --- gin.go | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/gin.go b/gin.go index b54dbd8a..618af206 100644 --- a/gin.go +++ b/gin.go @@ -7,6 +7,7 @@ package gin import ( "fmt" "html/template" + "io/fs" "net" "net/http" "os" @@ -267,6 +268,23 @@ func (engine *Engine) LoadHTMLFiles(files ...string) { engine.SetHTMLTemplate(templ) } + +// LoadHTMLFromFS loads HTML files identified by glob pattern +// from a filesytem interface and associates the result with HTML renderer. +func (engine *Engine) LoadHTMLFromFS(filesystem fs.FS, patterns ...string) { + left := engine.delims.Left + right := engine.delims.Right + templ := template.Must(template.New("").Delims(left, right).Funcs(engine.FuncMap).ParseFS(filesystem, patterns...)) + + if IsDebugging() { + debugPrintLoadTemplate(templ) + engine.HTMLRender = render.HTMLDebug{Glob: pattern, FuncMap: engine.FuncMap, Delims: engine.delims} + return + } + + engine.SetHTMLTemplate(templ) +} + // SetHTMLTemplate associate a template with HTML renderer. func (engine *Engine) SetHTMLTemplate(templ *template.Template) { if len(engine.trees) > 0 {