mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-31 03:25:11 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			36 lines
		
	
	
		
			999 B
		
	
	
	
		
			Go
		
	
	
	
		
			Vendored
		
	
	
	
			
		
		
	
	
			36 lines
		
	
	
		
			999 B
		
	
	
	
		
			Go
		
	
	
	
		
			Vendored
		
	
	
	
| 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) }
 |