frontmatter.go (view raw)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
package main import ( "bytes" "github.com/adrg/frontmatter" "time" ) type Date8601 struct { time.Time } func (d *Date8601) UnmarshalYAML(unmarshal func(interface{}) error) error { var date string err := unmarshal(&date) if err != nil { return err } d.Time, err = time.Parse("2006-01-02", date) return err } type Matter struct { Template string `yaml:"template"` URL string `yaml:"url"` Title string `yaml:"title"` Subtitle string `yaml:"subtitle"` Date Date8601 `yaml:"date"` Body string } // Parses frontmatter, populates the `matter` struct and // returns the rest func parseFrontmatter(inputBytes []byte) ([]byte, Matter) { m := Matter{} input := bytes.NewReader(inputBytes) rest, err := frontmatter.Parse(input, &m) if err != nil { printErr(err) } return rest, m } |