diff options
Diffstat (limited to 'echo/template_renderer.go')
-rw-r--r-- | echo/template_renderer.go | 25 |
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 | |||
3 | import ( | 3 | import ( |
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 | ||
17 | type TemplateRenderer struct { | 17 | type 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 | ||
24 | func NewTemplateRenderer(path, glob string, funcs template.FuncMap) (*TemplateRenderer, error) { | 24 | func 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 | |||
36 | func (r *TemplateRenderer) loadTemplates() (*template.Template, error) { | 36 | func (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 | } |