From c19536be6e4f8733af329204a50ffc254a679ee5 Mon Sep 17 00:00:00 2001 From: Mitch Riedstra Date: Sun, 1 Dec 2019 14:54:54 -0500 Subject: Initial Commit. Small command to convert my old setup and basic server that reads off of the disk for the new setup --- page/page.go | 69 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 page/page.go (limited to 'page/page.go') diff --git a/page/page.go b/page/page.go new file mode 100644 index 0000000..83e3c9e --- /dev/null +++ b/page/page.go @@ -0,0 +1,69 @@ +package page + +import ( + "fmt" + "io" + "io/ioutil" + "text/template" + "time" + + "gopkg.in/russross/blackfriday.v2" + "gopkg.in/yaml.v2" +) + +type Page struct { + Name string + Head string + Body string + Date *time.Time + Published bool +} + +// Can be adjusted to change the base template used in rendering +var BaseTemplate = "inc/base.html" + +func (p *Page) Render(wr io.Writer) error { + if err := p.readYaml(); err != nil { + return err + } + if err := p.readMarkdown(); err != nil { + return err + } + + t, err := template.ParseFiles(BaseTemplate) + if err != nil { + return err + } + + // Automatically pull from the yml file if applicable + if p.Head != "" { + t, err = t.Parse(` + {{define "head"}} + {{.Head}} + {{end}} + `) + if err != nil { + return err + } + } + + return t.Execute(wr, p) +} + +func (p *Page) readYaml() error { + fname := p.Name + ".yml" + b, err := ioutil.ReadFile(fname) + if err != nil { + return fmt.Errorf("While unmarshaling file '%s': %v", fname, err) + } + return yaml.Unmarshal(b, p) +} + +func (p *Page) readMarkdown() error { + b, err := ioutil.ReadFile(p.Name + ".md") + if err != nil { + return err + } + p.Body = string(blackfriday.Run(b)) + return nil +} -- cgit v1.2.3