1package ast
2
3import (
4 "fmt"
5
6 gast "github.com/yuin/goldmark/ast"
7)
8
9// A FootnoteLink struct represents a link to a footnote of Markdown
10// (PHP Markdown Extra) text.
11type FootnoteLink struct {
12 gast.BaseInline
13 Index int
14 RefCount int
15 RefIndex int
16}
17
18// Dump implements Node.Dump.
19func (n *FootnoteLink) Dump(source []byte, level int) {
20 m := map[string]string{}
21 m["Index"] = fmt.Sprintf("%v", n.Index)
22 m["RefCount"] = fmt.Sprintf("%v", n.RefCount)
23 m["RefIndex"] = fmt.Sprintf("%v", n.RefIndex)
24 gast.DumpHelper(n, source, level, m, nil)
25}
26
27// KindFootnoteLink is a NodeKind of the FootnoteLink node.
28var KindFootnoteLink = gast.NewNodeKind("FootnoteLink")
29
30// Kind implements Node.Kind.
31func (n *FootnoteLink) Kind() gast.NodeKind {
32 return KindFootnoteLink
33}
34
35// NewFootnoteLink returns a new FootnoteLink node.
36func NewFootnoteLink(index int) *FootnoteLink {
37 return &FootnoteLink{
38 Index: index,
39 RefCount: 0,
40 RefIndex: 0,
41 }
42}
43
44// A FootnoteBacklink struct represents a link to a footnote of Markdown
45// (PHP Markdown Extra) text.
46type FootnoteBacklink struct {
47 gast.BaseInline
48 Index int
49 RefCount int
50 RefIndex int
51}
52
53// Dump implements Node.Dump.
54func (n *FootnoteBacklink) Dump(source []byte, level int) {
55 m := map[string]string{}
56 m["Index"] = fmt.Sprintf("%v", n.Index)
57 m["RefCount"] = fmt.Sprintf("%v", n.RefCount)
58 m["RefIndex"] = fmt.Sprintf("%v", n.RefIndex)
59 gast.DumpHelper(n, source, level, m, nil)
60}
61
62// KindFootnoteBacklink is a NodeKind of the FootnoteBacklink node.
63var KindFootnoteBacklink = gast.NewNodeKind("FootnoteBacklink")
64
65// Kind implements Node.Kind.
66func (n *FootnoteBacklink) Kind() gast.NodeKind {
67 return KindFootnoteBacklink
68}
69
70// NewFootnoteBacklink returns a new FootnoteBacklink node.
71func NewFootnoteBacklink(index int) *FootnoteBacklink {
72 return &FootnoteBacklink{
73 Index: index,
74 RefCount: 0,
75 RefIndex: 0,
76 }
77}
78
79// A Footnote struct represents a footnote of Markdown
80// (PHP Markdown Extra) text.
81type Footnote struct {
82 gast.BaseBlock
83 Ref []byte
84 Index int
85}
86
87// Dump implements Node.Dump.
88func (n *Footnote) Dump(source []byte, level int) {
89 m := map[string]string{}
90 m["Index"] = fmt.Sprintf("%v", n.Index)
91 m["Ref"] = string(n.Ref)
92 gast.DumpHelper(n, source, level, m, nil)
93}
94
95// KindFootnote is a NodeKind of the Footnote node.
96var KindFootnote = gast.NewNodeKind("Footnote")
97
98// Kind implements Node.Kind.
99func (n *Footnote) Kind() gast.NodeKind {
100 return KindFootnote
101}
102
103// NewFootnote returns a new Footnote node.
104func NewFootnote(ref []byte) *Footnote {
105 return &Footnote{
106 Ref: ref,
107 Index: -1,
108 }
109}
110
111// A FootnoteList struct represents footnotes of Markdown
112// (PHP Markdown Extra) text.
113type FootnoteList struct {
114 gast.BaseBlock
115 Count int
116}
117
118// Dump implements Node.Dump.
119func (n *FootnoteList) Dump(source []byte, level int) {
120 m := map[string]string{}
121 m["Count"] = fmt.Sprintf("%v", n.Count)
122 gast.DumpHelper(n, source, level, m, nil)
123}
124
125// KindFootnoteList is a NodeKind of the FootnoteList node.
126var KindFootnoteList = gast.NewNodeKind("FootnoteList")
127
128// Kind implements Node.Kind.
129func (n *FootnoteList) Kind() gast.NodeKind {
130 return KindFootnoteList
131}
132
133// NewFootnoteList returns a new FootnoteList node.
134func NewFootnoteList() *FootnoteList {
135 return &FootnoteList{
136 Count: 0,
137 }
138}