summaryrefslogtreecommitdiff
path: root/internal/templatemanager/templatemanager.go
diff options
from:
to:
context:
space:
mode:
authorGravatar Saya Andy <145215889+SayaAndy@users.noreply.github.com> 2025-08-19 16:05:37 +0700
committerGravatar GitHub <noreply@github.com> 2025-08-19 16:05:37 +0700
commit0d8aa40ce197b10e32f2e6cc378188b71a83689f (patch)
tree0b3ed0e352836ede51e82ceaff8c9386e934802c /internal/templatemanager/templatemanager.go
parent6401cf603f598a8008c69a14fe58f460009180a7 (diff)
parent53923cf49f46041c82bbb0cbc155e4bdcc9e1a5d (diff)
downloadweb-0d8aa40ce197b10e32f2e6cc378188b71a83689f.tar.gz
web-0d8aa40ce197b10e32f2e6cc378188b71a83689f.zip
v0.6.1v0.6.1
feat(map): enable marker clustering via plugin refactor: move template manager definition to router package
Diffstat (limited to 'internal/templatemanager/templatemanager.go')
-rw-r--r--internal/templatemanager/templatemanager.go24
1 files changed, 22 insertions, 2 deletions
diff --git a/internal/templatemanager/templatemanager.go b/internal/templatemanager/templatemanager.go
index 5effcb3..f89d0c8 100644
--- a/internal/templatemanager/templatemanager.go
+++ b/internal/templatemanager/templatemanager.go
@@ -22,7 +22,7 @@ type TemplateManagerTemplates struct {
Files []string
}
-func NewTemplateManager(templates []TemplateManagerTemplates) (*TemplateManager, error) {
+func NewTemplateManager(templates ...TemplateManagerTemplates) (*TemplateManager, error) {
templateMap := make(map[string]templateManagerRender)
for _, tmplStruct := range templates {
@@ -37,7 +37,6 @@ func NewTemplateManager(templates []TemplateManagerTemplates) (*TemplateManager,
Main: filepath.Base(tmplStruct.Files[0]),
Tmpl: tmpl,
}
-
}
return &TemplateManager{
@@ -55,3 +54,24 @@ func (tm *TemplateManager) Render(name string, data interface{}) ([]byte, error)
err := tmpl.Tmpl.ExecuteTemplate(&buf, tmpl.Main, data)
return buf.Bytes(), err
}
+
+func (tm *TemplateManager) Add(name string, files ...string) error {
+ if len(files) == 0 {
+ return fmt.Errorf("you can't add template without any files")
+ }
+
+ tmpl := template.New("").Funcs(template.FuncMap{
+ "contains": strings.Contains,
+ })
+
+ tmpl, err := tmpl.ParseFiles(files...)
+ if err != nil {
+ return fmt.Errorf("failed to add template into manager: %w", err)
+ }
+
+ tm.templates[name] = templateManagerRender{
+ Main: filepath.Base(files[0]),
+ Tmpl: tmpl,
+ }
+ return nil
+}