package page import ( "html/template" "log" "net/http" "github.com/hacdias/caddy-hugo/assets" "github.com/hacdias/caddy-hugo/utils" ) const ( templateExtension = ".tmpl" ) var funcMap = template.FuncMap{ "splitCapitalize": utils.SplitCapitalize, } // Page type type Page struct { Title string Body interface{} } // Render the page func (p *Page) Render(w http.ResponseWriter, r *http.Request, templates ...string) (int, error) { if r.URL.Query().Get("minimal") == "true" { templates = append(templates, "base_minimal") } else { templates = append(templates, "base_full") } var tpl *template.Template for i, t := range templates { page, err := assets.Asset("templates/" + t + templateExtension) if err != nil { log.Print(err) return 500, err } if i == 0 { tpl, err = template.New(t).Funcs(funcMap).Parse(string(page)) } else { tpl, err = tpl.Parse(string(page)) } if err != nil { log.Print(err) return 500, err } } tpl.Execute(w, p) return 200, nil }