Diffstat (limited to 'internal/templatemanager')
| -rw-r--r-- | internal/templatemanager/templatemanager.go | 77 |
1 files changed, 0 insertions, 77 deletions
diff --git a/internal/templatemanager/templatemanager.go b/internal/templatemanager/templatemanager.go deleted file mode 100644 index f89d0c8..0000000 --- a/internal/templatemanager/templatemanager.go +++ /dev/null @@ -1,77 +0,0 @@ -package templatemanager - -import ( - "bytes" - "fmt" - "html/template" - "path/filepath" - "strings" -) - -type TemplateManager struct { - templates map[string]templateManagerRender -} - -type templateManagerRender struct { - Main string - Tmpl *template.Template -} - -type TemplateManagerTemplates struct { - Name string - Files []string -} - -func NewTemplateManager(templates ...TemplateManagerTemplates) (*TemplateManager, error) { - templateMap := make(map[string]templateManagerRender) - - for _, tmplStruct := range templates { - tmpl := template.New("").Funcs(template.FuncMap{ - "contains": strings.Contains, - }) - tmpl, err := tmpl.ParseFiles(tmplStruct.Files...) - if err != nil { - return nil, err - } - templateMap[tmplStruct.Name] = templateManagerRender{ - Main: filepath.Base(tmplStruct.Files[0]), - Tmpl: tmpl, - } - } - - return &TemplateManager{ - templates: templateMap, - }, nil -} - -func (tm *TemplateManager) Render(name string, data interface{}) ([]byte, error) { - tmpl, exists := tm.templates[name] - if !exists { - return nil, fmt.Errorf("template %s is not found", name) - } - - var buf bytes.Buffer - 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 -} |