summaryrefslogtreecommitdiff
path: root/internal/templatemanager
diff refs
from: back
to: back
| flip
diff options
context:
space:
mode:
authorGravatar SayaAndy <saya.andy@posteo.com> 2025-08-31 11:16:59 +0700
committerGravatar SayaAndy <saya.andy@posteo.com> 2025-08-31 11:16:59 +0700
commit9340e7022d95c912db5f1d9fcb0313743ae3cb4a (patch)
tree8c5c953d8110f54cbdd4780699b5d7d65a3c1295 /internal/templatemanager
parent1c14a4088b068fefe425cad1acdde2d603bd27a9 (diff)
downloadweb-9340e7022d95c912db5f1d9fcb0313743ae3cb4a.tar.gz
web-9340e7022d95c912db5f1d9fcb0313743ae3cb4a.zip
refactor: prepare layout for SPA
Diffstat (limited to 'internal/templatemanager')
-rw-r--r--internal/templatemanager/templatemanager.go15
1 files changed, 13 insertions, 2 deletions
diff --git a/internal/templatemanager/templatemanager.go b/internal/templatemanager/templatemanager.go
index f89d0c8..640a706 100644
--- a/internal/templatemanager/templatemanager.go
+++ b/internal/templatemanager/templatemanager.go
@@ -44,14 +44,25 @@ func NewTemplateManager(templates ...TemplateManagerTemplates) (*TemplateManager
}, nil
}
-func (tm *TemplateManager) Render(name string, data interface{}) ([]byte, error) {
+func (tm *TemplateManager) Render(name string, data any, files ...string) ([]byte, error) {
tmpl, exists := tm.templates[name]
if !exists {
return nil, fmt.Errorf("template %s is not found", name)
}
+ var err error
+ var tempTmpl *template.Template
+ if len(files) == 0 {
+ tempTmpl = tmpl.Tmpl
+ } else {
+ tempTmpl, err = tmpl.Tmpl.ParseFiles(files...)
+ if err != nil {
+ return nil, fmt.Errorf("couldn't include additional files in template rendering: %w", err)
+ }
+ }
+
var buf bytes.Buffer
- err := tmpl.Tmpl.ExecuteTemplate(&buf, tmpl.Main, data)
+ err = tempTmpl.ExecuteTemplate(&buf, tmpl.Main, data)
return buf.Bytes(), err
}