package internal import ( "bytes" "fmt" "html/template" "io" "log" "github.com/labstack/echo/v4" ) type TemplateEngine struct { tmpl *template.Template } 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 } func (te *TemplateEngine) Render( w io.Writer, name string, data interface{}, c echo.Context, ) error { return te.tmpl.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 }