summaryrefslogtreecommitdiff
path: root/internal/template.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/template.go')
-rw-r--r--internal/template.go47
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
}