diff options
Diffstat (limited to 'internal/template.go')
| -rw-r--r-- | internal/template.go | 47 |
1 files changed, 29 insertions, 18 deletions
diff --git a/internal/template.go b/internal/template.go index 3d2fe4b..118f7a2 100644 --- a/internal/template.go +++ b/internal/template.go @@ -1,34 +1,45 @@ package internal import ( + "bytes" + "fmt" "html/template" "io" + "log" "github.com/labstack/echo/v4" ) -type PageData struct { - Content template.HTML - Page string - Pages []string - Sections []string +type TemplateEngine struct { + tmpl *template.Template } -type SectionData struct { - Content template.HTML - Page string - Sections []string +func NewTemplateEngine() (*TemplateEngine, error) { + tmpl := template.New("") + + if _, err := tmpl.ParseGlob("views/*.html"); err != nil { + return nil, fmt.Errorf("parsing layout templates: %w", err) + } + + if _, err := tmpl.ParseGlob("views/pages/*/*.html"); err != nil { + return nil, fmt.Errorf("parsing page templates: %w", err) + } + + log.Println("Templates loaded successfully") + return &TemplateEngine{tmpl: tmpl}, nil } -type TemplateRenderer struct { - Template *template.Template +func (te *TemplateEngine) Render(w io.Writer, name string, data interface{}, c echo.Context) error { + return te.tmpl.ExecuteTemplate(w, name, data) } -func (t *TemplateRenderer) Render( - w io.Writer, - name string, - data interface{}, - c echo.Context, -) error { - return t.Template.ExecuteTemplate(w, name, data) +func (te *TemplateEngine) GetContent(page, section string) (template.HTML, error) { + templateName := fmt.Sprintf("%s_%s", page, section) + + var buf bytes.Buffer + if err := te.tmpl.ExecuteTemplate(&buf, templateName, nil); err != nil { + return "", err + } + + return template.HTML(buf.String()), nil } |