package publicbio import ( "html/template" "io" "log" "net/http" ) var templates = map[string]*template.Template{} const templatesDir = "templates/" func init() { initTemplate("profile") } func initTemplate(name string) { templates[name] = template.Must(template.New(name).ParseFiles(templatesDir+name+".tmpl", templatesDir+"base.tmpl")) } // renderTemplate retrieves the given template and renders it to the given io.Writer. // If something goes wrong, the error is logged and returned. func renderTemplate(w io.Writer, tmpl string, data interface{}) error { err := templates[tmpl].ExecuteTemplate(w, tmpl, data) if err != nil { log.Printf("[ERROR] Error rendering %s: %s\n", tmpl, err) } return err } func (app *app) pageHandler(name string) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { handleError(w, r, func() error { return renderTemplate(w, name, nil) }()) } }