forked from jshiffer/matterbridge
37 lines
716 B
Go
37 lines
716 B
Go
|
package parser
|
||
|
|
||
|
import (
|
||
|
"bytes"
|
||
|
|
||
|
"github.com/gomarkdown/markdown/ast"
|
||
|
)
|
||
|
|
||
|
func (p *Parser) documentMatter(data []byte) int {
|
||
|
if data[0] != '{' {
|
||
|
return 0
|
||
|
}
|
||
|
|
||
|
consumed := 0
|
||
|
matter := ast.DocumentMatterNone
|
||
|
if bytes.HasPrefix(data, []byte("{frontmatter}")) {
|
||
|
consumed = len("{frontmatter}")
|
||
|
matter = ast.DocumentMatterFront
|
||
|
}
|
||
|
if bytes.HasPrefix(data, []byte("{mainmatter}")) {
|
||
|
consumed = len("{mainmatter}")
|
||
|
matter = ast.DocumentMatterMain
|
||
|
}
|
||
|
if bytes.HasPrefix(data, []byte("{backmatter}")) {
|
||
|
consumed = len("{backmatter}")
|
||
|
matter = ast.DocumentMatterBack
|
||
|
}
|
||
|
if consumed == 0 {
|
||
|
return 0
|
||
|
}
|
||
|
node := &ast.DocumentMatter{Matter: matter}
|
||
|
p.addBlock(node)
|
||
|
p.finalize(node)
|
||
|
|
||
|
return consumed
|
||
|
}
|