From 3cfd99c25454899da8e35a5ba53578dfb83a3e13 Mon Sep 17 00:00:00 2001 From: Arsen Musayelyan Date: Wed, 16 Feb 2022 09:53:01 -0800 Subject: [PATCH] Add FuncMap to From* functions --- gin/tmpls/tmpls.go | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/gin/tmpls/tmpls.go b/gin/tmpls/tmpls.go index 604f5c4..137defa 100644 --- a/gin/tmpls/tmpls.go +++ b/gin/tmpls/tmpls.go @@ -49,7 +49,7 @@ func (t Tmpl) WriteContentType(res http.ResponseWriter) { res.Header().Set("Content-Type", "text/html; charset=utf-8") } -func FromFS(f fs.FS, root, ext string) (Map, error) { +func FromFS(f fs.FS, root, ext string, fm template.FuncMap) (Map, error) { tmpls := Map{} err := fs.WalkDir(f, root, func(path string, d fs.DirEntry, err error) error { if err != nil { @@ -62,7 +62,13 @@ func FromFS(f fs.FS, root, ext string) (Map, error) { tmplName := strings.TrimPrefix(path, root+"/") tmplName = strings.TrimSuffix(tmplName, ext) - tmpl, err := template.New(filepath.Base(path)).ParseFS(f, path, filepath.Join(root, "base"+ext)) + tmpl := template.New(filepath.Base(path)) + + if fm != nil { + tmpl = tmpl.Funcs(fm) + } + + tmpl, err = tmpl.ParseFS(f, path, filepath.Join(root, "base"+ext)) if err != nil { return err } @@ -74,8 +80,8 @@ func FromFS(f fs.FS, root, ext string) (Map, error) { return tmpls, err } -func FromDir(baseDir, ext string) (Map, error) { +func FromDir(baseDir, ext string, fm template.FuncMap) (Map, error) { dir := filepath.Dir(baseDir) root := filepath.Base(baseDir) - return FromFS(os.DirFS(dir), root, ext) + return FromFS(os.DirFS(dir), root, ext, fm) }