diff options
Diffstat (limited to 'templ.go')
-rw-r--r-- | templ.go | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/templ.go b/templ.go new file mode 100644 index 0000000..72656bd --- /dev/null +++ b/templ.go @@ -0,0 +1,84 @@ +/* +* +* Templating support for binit +* +*/ + +package main + + +import ( + "os" + "io/ioutil" + "regexp" + "errors" +) + + +func prepare_paste_page(c *Config, paste_ID string) (string, error) { + + s:= "" + + // insert header + + head_file := c.templ_dir + "/header.html" + + f_head, err := os.Open(head_file) + defer f_head.Close() + + if err == nil { + cont, err := ioutil.ReadFile(head_file) + if err == nil{ + s += string(cont) + } + } + + // insert content + + cont_file := c.paste_dir + "/" + paste_ID + f_cont, err := os.Open(cont_file) + defer f_cont.Close() + + if err == nil { + // Let's read the content of the paste + + cont, err := ioutil.ReadFile(cont_file) + if err == nil { + paste_buf := string(cont) + + // ...Let's read the template + templ_file := c.templ_dir + "/templ.html" + f_templ, err := os.Open(templ_file) + defer f_templ.Close() + + cont, err := ioutil.ReadFile(templ_file) + if err == nil { + tmpl := string(cont) + // ...and replace {{CONTENT}} with the paste itself! + re,_ := regexp.Compile("{{CONTENT}}") + tmpl = string(re.ReplaceAll([]byte(tmpl), []byte(paste_buf))) + + s += tmpl + + } else { + return "", errors.New("Error opening template file") + } + + } else { + return "", errors.New("Error opening paste") + } + } + // insert footer + foot_file := c.templ_dir + "/footer.html" + f_foot, err := os.Open(foot_file) + defer f_foot.Close() + + if err == nil { + cont, err := ioutil.ReadFile(foot_file) + if err == nil{ + s += string(cont) + } + } + + return s, nil +} |