matter.go 716 B

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