Skip to content

Commit cda8cd4

Browse files
committed
Fix templates initialization on server run
1 parent 643f46f commit cda8cd4

File tree

3 files changed

+51
-44
lines changed

3 files changed

+51
-44
lines changed

helpers.go

-43
This file was deleted.

server.go

+5
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,11 @@ func (s *Server) Run() {
5252
r.Handle("/note", saveNoteHandler(s.DB)).Methods("POST")
5353
r.Handle("/note/{id}", readNoteHandler(s.DB)).Methods("GET")
5454

55+
// Initialize templates (durty solution)
56+
if err := initTemplates(); err != nil {
57+
log.Fatal(err)
58+
}
59+
5560
log.Printf("Starting tornote server on %s", s.Host)
5661
log.Fatal(http.ListenAndServe(s.Host, r))
5762
}

templates.go

+46-1
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,59 @@ package tornote
1818

1919
import (
2020
"errors"
21+
"html/template"
22+
"log"
2123
"net/http"
2224
)
2325

26+
var templates map[string]*template.Template
27+
28+
// Load and compile templates files from bindata.
29+
func initTemplates() error {
30+
if templates == nil {
31+
templates = make(map[string]*template.Template)
32+
}
33+
34+
layout, err := Asset("templates/layout/base.html")
35+
if err != nil {
36+
log.Fatal(err)
37+
}
38+
39+
pages, err := AssetDir("templates")
40+
if err != nil {
41+
log.Fatal(err)
42+
}
43+
44+
for _, file := range pages {
45+
// Skip layout dir
46+
if file == "layout" {
47+
continue
48+
}
49+
// Get template data from bindata
50+
templateData, err := Asset("templates/" + file)
51+
if err != nil {
52+
return err
53+
}
54+
// Compile layout
55+
target, err := template.New(file).Parse(string(layout))
56+
if err != nil {
57+
return err
58+
}
59+
// Compile target template
60+
templates[file], err = target.Parse(string(templateData))
61+
if err != nil {
62+
return err
63+
}
64+
}
65+
66+
return nil
67+
}
68+
2469
// Wrapper around template.ExecuteTemplate method.
2570
func renderTemplate(w http.ResponseWriter, name string, data interface{}) error {
2671
tmpl, ok := templates[name]
2772
if !ok {
28-
return errors.New("This template doesn't exist.")
73+
return errors.New("This template doesn't exist")
2974
}
3075

3176
w.Header().Set("Content-Type", "text/html; charset=utf-8")

0 commit comments

Comments
 (0)