aboutsummaryrefslogtreecommitdiff
path: root/echo/template_renderer.go
diff options
context:
space:
mode:
Diffstat (limited to 'echo/template_renderer.go')
-rw-r--r--echo/template_renderer.go25
1 files changed, 10 insertions, 15 deletions
diff --git a/echo/template_renderer.go b/echo/template_renderer.go
index 0bafd92..7bfd006 100644
--- a/echo/template_renderer.go
+++ b/echo/template_renderer.go
@@ -3,8 +3,8 @@ package echo
3import ( 3import (
4 "html/template" 4 "html/template"
5 "io" 5 "io"
6 "io/fs"
6 "net/http" 7 "net/http"
7 "os"
8 "path/filepath" 8 "path/filepath"
9 9
10 "github.com/labstack/echo/v4" 10 "github.com/labstack/echo/v4"
@@ -15,16 +15,16 @@ type TemplateChecker interface {
15} 15}
16 16
17type TemplateRenderer struct { 17type TemplateRenderer struct {
18 path string 18 templates fs.FS
19 glob string 19 glob string
20 funcs template.FuncMap 20 funcs template.FuncMap
21 cache *template.Template 21 cache *template.Template
22} 22}
23 23
24func NewTemplateRenderer(path, glob string, funcs template.FuncMap) (*TemplateRenderer, error) { 24func NewTemplateRenderer(templates fs.FS, glob string, funcs template.FuncMap) (*TemplateRenderer, error) {
25 var err error 25 var err error
26 26
27 r := &TemplateRenderer{path: path, glob: glob, funcs: funcs} 27 r := &TemplateRenderer{templates: templates, glob: glob, funcs: funcs}
28 r.cache, err = r.loadTemplates() 28 r.cache, err = r.loadTemplates()
29 if err != nil { 29 if err != nil {
30 return nil, err 30 return nil, err
@@ -36,7 +36,7 @@ func NewTemplateRenderer(path, glob string, funcs template.FuncMap) (*TemplateRe
36func (r *TemplateRenderer) loadTemplates() (*template.Template, error) { 36func (r *TemplateRenderer) loadTemplates() (*template.Template, error) {
37 t := template.New("").Funcs(r.funcs) 37 t := template.New("").Funcs(r.funcs)
38 38
39 err := filepath.Walk(r.path, func(path string, info os.FileInfo, err error) error { 39 err := fs.WalkDir(r.templates, ".", func(path string, info fs.DirEntry, err error) error {
40 if err != nil { 40 if err != nil {
41 return err 41 return err
42 } 42 }
@@ -44,17 +44,12 @@ func (r *TemplateRenderer) loadTemplates() (*template.Template, error) {
44 if !info.IsDir() { 44 if !info.IsDir() {
45 _, fn := filepath.Split(path) 45 _, fn := filepath.Split(path)
46 if ok, _ := filepath.Match(r.glob, fn); ok { 46 if ok, _ := filepath.Match(r.glob, fn); ok {
47 fc, err := os.ReadFile(path) 47 fc, err := fs.ReadFile(r.templates, path)
48 if err != nil { 48 if err != nil {
49 return err 49 return err
50 } 50 }
51 51
52 rp, err := filepath.Rel(r.path, path) 52 _, err = t.New(path).Parse(string(fc))
53 if err != nil {
54 return err
55 }
56
57 _, err = t.New(rp).Parse(string(fc))
58 if err != nil { 53 if err != nil {
59 return err 54 return err
60 } 55 }