best routing, static files embedding

This commit is contained in:
Henrique Dias
2015-09-13 12:14:18 +01:00
parent 6cdc145809
commit 8eeeb3870f
13 changed files with 921 additions and 67 deletions

59
page/page.go Normal file
View File

@@ -0,0 +1,59 @@
package page
import (
"html/template"
"net/http"
"strings"
"github.com/hacdias/caddy-hugo/assets"
)
const (
templateExtension = ".tmpl"
headerMark = "{{#HEADER#}}"
footerMark = "{{#FOOTER#}}"
)
// Info type
type Info struct {
Title string
Body interface{}
}
// Render the page
func (p *Info) Render(name string, w http.ResponseWriter) (int, error) {
rawHeader, err := assets.Asset("templates/header" + templateExtension)
if err != nil {
return 500, err
}
header := string(rawHeader)
rawFooter, err := assets.Asset("templates/footer" + templateExtension)
if err != nil {
return 500, err
}
footer := string(rawFooter)
rawPage, err := assets.Asset("templates/" + name + templateExtension)
if err != nil {
return 500, err
}
page := string(rawPage)
page = strings.Replace(page, headerMark, header, -1)
page = strings.Replace(page, footerMark, footer, -1)
tpl, err := template.New("page").Parse(page)
if err != nil {
return 500, err
}
tpl.Execute(w, p)
return 200, nil
}