matter.go

 1package parser
 2
 3import (
 4	"bytes"
 5
 6	"github.com/gomarkdown/markdown/ast"
 7)
 8
 9func (p *Parser) documentMatter(data []byte) int {
10	if data[0] != '{' {
11		return 0
12	}
13
14	consumed := 0
15	matter := ast.DocumentMatterNone
16	if bytes.HasPrefix(data, []byte("{frontmatter}")) {
17		consumed = len("{frontmatter}")
18		matter = ast.DocumentMatterFront
19	}
20	if bytes.HasPrefix(data, []byte("{mainmatter}")) {
21		consumed = len("{mainmatter}")
22		matter = ast.DocumentMatterMain
23	}
24	if bytes.HasPrefix(data, []byte("{backmatter}")) {
25		consumed = len("{backmatter}")
26		matter = ast.DocumentMatterBack
27	}
28	if consumed == 0 {
29		return 0
30	}
31	node := &ast.DocumentMatter{Matter: matter}
32	p.addBlock(node)
33	p.finalize(node)
34
35	return consumed
36}