1
0
mirror of https://github.com/osmarks/mycorrhiza.git synced 2024-12-12 13:30:26 +00:00
mycorrhiza/render.go

77 lines
1.9 KiB
Go
Raw Normal View History

package main
import (
2020-06-19 14:30:19 +00:00
"bytes"
"fmt"
2020-06-19 14:30:19 +00:00
"path"
"text/template"
)
2020-06-17 15:19:52 +00:00
func EditHyphaPage(name, text_mime, binary_mime, content, tags string) string {
2020-06-19 14:30:19 +00:00
keys := map[string]string{
"Title": fmt.Sprintf(TitleTemplate, name),
}
page := map[string]string{
"Text": content,
"TextMime": text_mime,
"BinMime": binary_mime,
"Name": name,
"Tags": tags,
}
return renderBase(renderFromMap(page, "Hypha/edit.html"), keys)
}
2020-06-17 15:19:52 +00:00
2020-06-19 14:30:19 +00:00
func HyphaPage(hyphae map[string]*Hypha, rev Revision, content string) string {
keys := map[string]string{
"Title": fmt.Sprintf(TitleTemplate, rev.FullName),
2020-06-17 15:19:52 +00:00
}
2020-06-19 14:30:19 +00:00
return renderBase(renderFromString(content, "Hypha/index.html"), keys)
}
2020-06-17 15:19:52 +00:00
2020-06-19 14:30:19 +00:00
/*
Collect and render page from base template
Args:
content: string or pre-rendered template
keys: map with replaced standart fields
*/
func renderBase(content string, keys map[string]string) string {
page := map[string]string{
"Title": DefaultTitle,
"Header": renderFromString(DefaultHeaderText, "header.html"),
"Footer": renderFromString(DefaultFooterText, "footer.html"),
"Sidebar": DefaultSidebar,
"Main": DefaultContent,
}
for key, val := range keys {
page[key] = val
}
page["Main"] = content
return renderFromMap(page, "base.html")
2020-06-17 15:19:52 +00:00
}
2020-06-19 14:30:19 +00:00
func renderFromMap(data map[string]string, templatePath string) string {
filePath := path.Join("templates", templatePath)
tmpl, err := template.ParseFiles(filePath)
if err != nil {
return err.Error()
}
2020-06-19 14:30:19 +00:00
buf := new(bytes.Buffer)
if err := tmpl.Execute(buf, data); err != nil {
return err.Error()
}
return buf.String()
}
2020-06-19 14:30:19 +00:00
func renderFromString(data string, templatePath string) string {
filePath := path.Join("templates", templatePath)
tmpl, err := template.ParseFiles(filePath)
if err != nil {
return err.Error()
}
buf := new(bytes.Buffer)
if err := tmpl.Execute(buf, data); err != nil {
return err.Error()
}
return buf.String()
}