diff options
author | Cameron Moore <moorereason@gmail.com> | 2016-12-26 15:23:20 -0600 |
---|---|---|
committer | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2017-03-11 17:52:25 +0100 |
commit | f039e3be9e4a11808508c8cd3043b340deea040f (patch) | |
tree | df3e709fc6321fd2a3e1d23efa2c3512d8ed4a94 /hugolib/page.go | |
parent | ddc8cc0082965143a650052a9aa538bac9133481 (diff) |
parser: Refactor frontmatter parser and add tests
Lots of cleanups here:
- Refactor InterfaceToConfig and InterfaceToFrontMatter to use io.Writer.
- Simplify InterfaceToFrontMatter by wrapping InterfaceToConfig.
- Export FrontmatterType since we return it in DetectFrontMatter.
- Refactor removeTOMLIdentifier to avoid blindly replacing "+++".
- Update HandleJSONMetaData to return an empty map on nil input.
- Updates vendored goorgeous package and test for org-mode frontmatter.
- Add tests and godoc comments.
Coverage for parser package increased from 45.2% to 85.2%.
Diffstat (limited to 'hugolib/page.go')
-rw-r--r-- | hugolib/page.go | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/hugolib/page.go b/hugolib/page.go index 02f889d93..5ee31c2a8 100644 --- a/hugolib/page.go +++ b/hugolib/page.go @@ -1424,15 +1424,20 @@ func (p *Page) SetSourceMetaData(in interface{}, mark rune) (err error) { } }() - var by []byte + buf := bp.GetBuffer() + defer bp.PutBuffer(buf) - by, err = parser.InterfaceToFrontMatter(in, mark) + err = parser.InterfaceToFrontMatter(in, mark, buf) if err != nil { return } - by = append(by, '\n') - p.Source.Frontmatter = by + _, err = buf.WriteRune('\n') + if err != nil { + return + } + + p.Source.Frontmatter = buf.Bytes() return } |