1234567891011121314151617181920212223242526272829303132333435 |
- package org
-
- import (
- "regexp"
- )
-
- type FootnoteDefinition struct {
- Name string
- Children []Node
- Inline bool
- }
-
- var footnoteDefinitionRegexp = regexp.MustCompile(`^\[fn:([\w-]+)\](\s+(.+)|\s*$)`)
-
- func lexFootnoteDefinition(line string) (token, bool) {
- if m := footnoteDefinitionRegexp.FindStringSubmatch(line); m != nil {
- return token{"footnoteDefinition", 0, m[1], m}, true
- }
- return nilToken, false
- }
-
- func (d *Document) parseFootnoteDefinition(i int, parentStop stopFn) (int, Node) {
- start, name := i, d.tokens[i].content
- d.tokens[i] = tokenize(d.tokens[i].matches[2])
- stop := func(d *Document, i int) bool {
- return parentStop(d, i) ||
- (isSecondBlankLine(d, i) && i > start+1) ||
- d.tokens[i].kind == "headline" || d.tokens[i].kind == "footnoteDefinition"
- }
- consumed, nodes := d.parseMany(i, stop)
- definition := FootnoteDefinition{name, nodes, false}
- return consumed, definition
- }
-
- func (n FootnoteDefinition) String() string { return orgWriter.WriteNodesAsString(n) }
|