summaryrefslogtreecommitdiff
path: root/internal/template.go
diff options
context:
space:
mode:
authorMikkel Thestrup <mikkel_thestrup@mithe.dk>2025-12-06 19:29:47 +0100
committerMikkel Thestrup <mikkel_thestrup@mithe.dk>2025-12-06 19:29:47 +0100
commit21e9956d25720998c3f59e052dfa84fb13d513bf (patch)
tree37ce4c877f46248e1ccf3cae495e88476a504561 /internal/template.go
parentb668f82b3bb834265c842bff96c252a513afa647 (diff)
downloadweb-portfolio-21e9956d25720998c3f59e052dfa84fb13d513bf.tar.gz
web-portfolio-21e9956d25720998c3f59e052dfa84fb13d513bf.zip
Compartmentalize the code
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
}