Add md-footnote
This commit is contained in:
31
crates/lib/md-footnote/tests/fixtures/0.md
vendored
Normal file
31
crates/lib/md-footnote/tests/fixtures/0.md
vendored
Normal file
@@ -0,0 +1,31 @@
|
||||
Basic test
|
||||
|
||||
......
|
||||
|
||||
[^a]
|
||||
[^a]
|
||||
|
||||
[^a]: Multi
|
||||
line
|
||||
|
||||
Multi-paragraph
|
||||
|
||||
[^a]: duplicate
|
||||
|
||||
normal paragraph
|
||||
|
||||
......
|
||||
|
||||
<p data-sourcepos="1:1-2:4"><sup data-sourcepos="1:1-1:4" class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup>
|
||||
<sup data-sourcepos="2:1-2:4" class="footnote-ref"><a href="#fn1" id="fnref2">[1]</a></sup></p>
|
||||
<p data-sourcepos="11:1-11:16">normal paragraph</p>
|
||||
<hr class="footnotes-sep">
|
||||
<section class="footnotes">
|
||||
<ol class="footnotes-list">
|
||||
<li data-sourcepos="4:1-8:0" id="fn1" class="footnote-item">
|
||||
<p data-sourcepos="4:7-5:4">Multi
|
||||
line</p>
|
||||
<p data-sourcepos="7:5-7:19">Multi-paragraph <a href="#fnref1" class="footnote-backref">↩︎</a> <a href="#fnref2" class="footnote-backref">↩︎</a></p>
|
||||
</li>
|
||||
</ol>
|
||||
</section>
|
||||
45
crates/lib/md-footnote/tests/fixtures/1.md
vendored
Normal file
45
crates/lib/md-footnote/tests/fixtures/1.md
vendored
Normal file
@@ -0,0 +1,45 @@
|
||||
Pandoc example
|
||||
|
||||
......
|
||||
|
||||
Here is a footnote reference,[^1] and another.[^longnote]
|
||||
|
||||
[^1]: Here is the footnote.
|
||||
|
||||
[^longnote]: Here's one with multiple blocks.
|
||||
|
||||
Subsequent paragraphs are indented to show that they
|
||||
belong to the previous footnote.
|
||||
|
||||
{ some.code }
|
||||
|
||||
The whole paragraph can be indented, or just the first
|
||||
line. In this way, multi-paragraph footnotes work like
|
||||
multi-paragraph list items.
|
||||
|
||||
This paragraph won't be part of the note, because it
|
||||
isn't indented.
|
||||
|
||||
......
|
||||
|
||||
<p data-sourcepos="1:1-1:57">Here is a footnote reference,<sup data-sourcepos="1:30-1:33" class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup> and another.<sup data-sourcepos="1:47-1:57" class="footnote-ref"><a href="#fn2" id="fnref2">[2]</a></sup></p>
|
||||
<p data-sourcepos="16:1-17:15">This paragraph won't be part of the note, because it
|
||||
isn't indented.</p>
|
||||
<hr class="footnotes-sep">
|
||||
<section class="footnotes">
|
||||
<ol class="footnotes-list">
|
||||
<li data-sourcepos="3:1-4:0" id="fn1" class="footnote-item">
|
||||
<p data-sourcepos="3:7-3:27">Here is the footnote. <a href="#fnref1" class="footnote-backref">↩︎</a></p>
|
||||
</li>
|
||||
<li data-sourcepos="5:1-15:0" id="fn2" class="footnote-item">
|
||||
<p data-sourcepos="5:14-5:45">Here's one with multiple blocks.</p>
|
||||
<p data-sourcepos="7:5-8:32">Subsequent paragraphs are indented to show that they
|
||||
belong to the previous footnote.</p>
|
||||
<pre><code data-sourcepos="10:9-10:21">{ some.code }
|
||||
</code></pre>
|
||||
<p data-sourcepos="12:5-14:31">The whole paragraph can be indented, or just the first
|
||||
line. In this way, multi-paragraph footnotes work like
|
||||
multi-paragraph list items. <a href="#fnref2" class="footnote-backref">↩︎</a></p>
|
||||
</li>
|
||||
</ol>
|
||||
</section>
|
||||
19
crates/lib/md-footnote/tests/fixtures/10.md
vendored
Normal file
19
crates/lib/md-footnote/tests/fixtures/10.md
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
Newline after footnote identifier
|
||||
|
||||
......
|
||||
|
||||
[^a]
|
||||
|
||||
[^a]:
|
||||
b
|
||||
|
||||
......
|
||||
|
||||
<p data-sourcepos="1:1-1:4"><sup data-sourcepos="1:1-1:4" class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup></p>
|
||||
<p data-sourcepos="4:1-4:1">b</p>
|
||||
<hr class="footnotes-sep">
|
||||
<section class="footnotes">
|
||||
<ol class="footnotes-list">
|
||||
<li data-sourcepos="3:1-3:5" id="fn1" class="footnote-item"> <a href="#fnref1" class="footnote-backref">↩︎</a></li>
|
||||
</ol>
|
||||
</section>
|
||||
27
crates/lib/md-footnote/tests/fixtures/2.md
vendored
Normal file
27
crates/lib/md-footnote/tests/fixtures/2.md
vendored
Normal file
@@ -0,0 +1,27 @@
|
||||
They could terminate each other
|
||||
|
||||
......
|
||||
|
||||
[^1][^2][^3]
|
||||
|
||||
[^1]: foo
|
||||
[^2]: bar
|
||||
[^3]: baz
|
||||
|
||||
......
|
||||
|
||||
<p data-sourcepos="1:1-1:12"><sup data-sourcepos="1:1-1:4" class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup><sup data-sourcepos="1:5-1:8" class="footnote-ref"><a href="#fn2" id="fnref2">[2]</a></sup><sup data-sourcepos="1:9-1:12" class="footnote-ref"><a href="#fn3" id="fnref3">[3]</a></sup></p>
|
||||
<hr class="footnotes-sep">
|
||||
<section class="footnotes">
|
||||
<ol class="footnotes-list">
|
||||
<li data-sourcepos="3:1-3:9" id="fn1" class="footnote-item">
|
||||
<p data-sourcepos="3:7-3:9">foo <a href="#fnref1" class="footnote-backref">↩︎</a></p>
|
||||
</li>
|
||||
<li data-sourcepos="4:1-4:9" id="fn2" class="footnote-item">
|
||||
<p data-sourcepos="4:7-4:9">bar <a href="#fnref2" class="footnote-backref">↩︎</a></p>
|
||||
</li>
|
||||
<li data-sourcepos="5:1-5:9" id="fn3" class="footnote-item">
|
||||
<p data-sourcepos="5:7-5:9">baz <a href="#fnref3" class="footnote-backref">↩︎</a></p>
|
||||
</li>
|
||||
</ol>
|
||||
</section>
|
||||
23
crates/lib/md-footnote/tests/fixtures/3.md
vendored
Normal file
23
crates/lib/md-footnote/tests/fixtures/3.md
vendored
Normal file
@@ -0,0 +1,23 @@
|
||||
They could be inside blockquotes, and are lazy
|
||||
|
||||
......
|
||||
|
||||
[^foo]
|
||||
|
||||
> [^foo]: bar
|
||||
baz
|
||||
|
||||
......
|
||||
|
||||
<p data-sourcepos="1:1-1:6"><sup data-sourcepos="1:1-1:6" class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup></p>
|
||||
<blockquote data-sourcepos="3:1-4:3">
|
||||
</blockquote>
|
||||
<hr class="footnotes-sep">
|
||||
<section class="footnotes">
|
||||
<ol class="footnotes-list">
|
||||
<li data-sourcepos="3:3-4:3" id="fn1" class="footnote-item">
|
||||
<p data-sourcepos="3:11-4:3">bar
|
||||
baz <a href="#fnref1" class="footnote-backref">↩︎</a></p>
|
||||
</li>
|
||||
</ol>
|
||||
</section>
|
||||
14
crates/lib/md-footnote/tests/fixtures/4.md
vendored
Normal file
14
crates/lib/md-footnote/tests/fixtures/4.md
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
Their labels could not contain spaces or newlines
|
||||
|
||||
......
|
||||
|
||||
[^ foo]: bar baz
|
||||
|
||||
[^foo
|
||||
]: bar baz
|
||||
|
||||
......
|
||||
|
||||
<p data-sourcepos="1:1-1:16">[^ foo]: bar baz</p>
|
||||
<p data-sourcepos="3:1-4:10">[^foo
|
||||
]: bar baz</p>
|
||||
19
crates/lib/md-footnote/tests/fixtures/5.md
vendored
Normal file
19
crates/lib/md-footnote/tests/fixtures/5.md
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
Duplicate footnotes:
|
||||
|
||||
......
|
||||
|
||||
[^xxxxx] [^xxxxx]
|
||||
|
||||
[^xxxxx]: foo
|
||||
|
||||
......
|
||||
|
||||
<p data-sourcepos="1:1-1:17"><sup data-sourcepos="1:1-1:8" class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup> <sup data-sourcepos="1:10-1:17" class="footnote-ref"><a href="#fn1" id="fnref2">[1]</a></sup></p>
|
||||
<hr class="footnotes-sep">
|
||||
<section class="footnotes">
|
||||
<ol class="footnotes-list">
|
||||
<li data-sourcepos="3:1-3:13" id="fn1" class="footnote-item">
|
||||
<p data-sourcepos="3:11-3:13">foo <a href="#fnref1" class="footnote-backref">↩︎</a> <a href="#fnref2" class="footnote-backref">↩︎</a></p>
|
||||
</li>
|
||||
</ol>
|
||||
</section>
|
||||
28
crates/lib/md-footnote/tests/fixtures/6.md
vendored
Normal file
28
crates/lib/md-footnote/tests/fixtures/6.md
vendored
Normal file
@@ -0,0 +1,28 @@
|
||||
Indents
|
||||
|
||||
|
||||
......
|
||||
|
||||
[^xxxxx] [^yyyyy]
|
||||
|
||||
[^xxxxx]: foo
|
||||
---
|
||||
|
||||
[^yyyyy]: foo
|
||||
---
|
||||
|
||||
......
|
||||
|
||||
<p data-sourcepos="1:1-1:17"><sup data-sourcepos="1:1-1:8" class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup> <sup data-sourcepos="1:10-1:17" class="footnote-ref"><a href="#fn2" id="fnref2">[2]</a></sup></p>
|
||||
<hr data-sourcepos="7:4-7:6">
|
||||
<hr class="footnotes-sep">
|
||||
<section class="footnotes">
|
||||
<ol class="footnotes-list">
|
||||
<li data-sourcepos="3:1-5:0" id="fn1" class="footnote-item">
|
||||
<h2 data-sourcepos="3:11-4:7">foo</h2>
|
||||
<a href="#fnref1" class="footnote-backref">↩︎</a></li>
|
||||
<li data-sourcepos="6:1-6:13" id="fn2" class="footnote-item">
|
||||
<p data-sourcepos="6:11-6:13">foo <a href="#fnref2" class="footnote-backref">↩︎</a></p>
|
||||
</li>
|
||||
</ol>
|
||||
</section>
|
||||
19
crates/lib/md-footnote/tests/fixtures/8.md
vendored
Normal file
19
crates/lib/md-footnote/tests/fixtures/8.md
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
Indents for the first line (tabs)
|
||||
|
||||
......
|
||||
|
||||
[^xxxxx]
|
||||
|
||||
[^xxxxx]: foo
|
||||
|
||||
......
|
||||
|
||||
<p data-sourcepos="1:1-1:8"><sup data-sourcepos="1:1-1:8" class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup></p>
|
||||
<hr class="footnotes-sep">
|
||||
<section class="footnotes">
|
||||
<ol class="footnotes-list">
|
||||
<li data-sourcepos="3:1-3:14" id="fn1" class="footnote-item">
|
||||
<p data-sourcepos="3:12-3:14">foo <a href="#fnref1" class="footnote-backref">↩︎</a></p>
|
||||
</li>
|
||||
</ol>
|
||||
</section>
|
||||
37
crates/lib/md-footnote/tests/fixtures/9.md
vendored
Normal file
37
crates/lib/md-footnote/tests/fixtures/9.md
vendored
Normal file
@@ -0,0 +1,37 @@
|
||||
Nested blocks
|
||||
|
||||
......
|
||||
|
||||
[^a]
|
||||
|
||||
[^a]: abc
|
||||
|
||||
def
|
||||
hij
|
||||
|
||||
- list
|
||||
|
||||
> block
|
||||
|
||||
terminates here
|
||||
|
||||
......
|
||||
|
||||
<p data-sourcepos="1:1-1:4"><sup data-sourcepos="1:1-1:4" class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup></p>
|
||||
<p data-sourcepos="12:1-12:15">terminates here</p>
|
||||
<hr class="footnotes-sep">
|
||||
<section class="footnotes">
|
||||
<ol class="footnotes-list">
|
||||
<li data-sourcepos="3:1-11:0" id="fn1" class="footnote-item">
|
||||
<p data-sourcepos="3:7-3:9">abc</p>
|
||||
<p data-sourcepos="5:5-6:3">def
|
||||
hij</p>
|
||||
<ul data-sourcepos="8:5-9:0">
|
||||
<li data-sourcepos="8:5-9:0">list</li>
|
||||
</ul>
|
||||
<blockquote data-sourcepos="10:5-10:11">
|
||||
<p data-sourcepos="10:7-10:11">block</p>
|
||||
</blockquote>
|
||||
<a href="#fnref1" class="footnote-backref">↩︎</a></li>
|
||||
</ol>
|
||||
</section>
|
||||
24
crates/lib/md-footnote/tests/fixtures/_7.md
vendored
Normal file
24
crates/lib/md-footnote/tests/fixtures/_7.md
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
Indents for the first line
|
||||
.............
|
||||
|
||||
[^xxxxx] [^yyyyy]
|
||||
|
||||
[^xxxxx]: foo
|
||||
|
||||
[^yyyyy]: foo
|
||||
|
||||
.............
|
||||
|
||||
<p><sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup> <sup class="footnote-ref"><a href="#fn2" id="fnref2">[2]</a></sup></p>
|
||||
<hr class="footnotes-sep">
|
||||
<section class="footnotes">
|
||||
<ol class="footnotes-list">
|
||||
<li id="fn1" class="footnote-item">
|
||||
<p>foo <a href="#fnref1" class="footnote-backref">↩︎</a></p>
|
||||
</li>
|
||||
<li id="fn2" class="footnote-item">
|
||||
<pre><code>foo
|
||||
</code></pre>
|
||||
<a href="#fnref2" class="footnote-backref">↩︎</a></li>
|
||||
</ol>
|
||||
</section>
|
||||
21
crates/lib/md-footnote/tests/fixtures/inline-1.md
vendored
Normal file
21
crates/lib/md-footnote/tests/fixtures/inline-1.md
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
We support inline notes too (pandoc example)
|
||||
|
||||
......
|
||||
|
||||
Here is an inline note.^[Inlines notes are easier to write, since
|
||||
you don't have to pick an identifier and move down to type the
|
||||
note.]
|
||||
|
||||
......
|
||||
|
||||
<p data-sourcepos="1:1-3:6">Here is an inline note.<sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup></p>
|
||||
<hr class="footnotes-sep">
|
||||
<section class="footnotes">
|
||||
<ol class="footnotes-list">
|
||||
<li id="fn1" class="footnote-item">
|
||||
<p>Inlines notes are easier to write, since
|
||||
you don't have to pick an identifier and move down to type the
|
||||
note. <a href="#fnref1" class="footnote-backref">↩︎</a></p>
|
||||
</li>
|
||||
</ol>
|
||||
</section>
|
||||
17
crates/lib/md-footnote/tests/fixtures/inline-2.md
vendored
Normal file
17
crates/lib/md-footnote/tests/fixtures/inline-2.md
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
Inline footnotes can have arbitrary markup
|
||||
|
||||
......
|
||||
|
||||
foo^[ *bar* ]
|
||||
|
||||
......
|
||||
|
||||
<p data-sourcepos="1:1-1:13">foo<sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup></p>
|
||||
<hr class="footnotes-sep">
|
||||
<section class="footnotes">
|
||||
<ol class="footnotes-list">
|
||||
<li id="fn1" class="footnote-item">
|
||||
<p> <em data-sourcepos="1:7-1:11">bar</em> <a href="#fnref1" class="footnote-backref">↩︎</a></p>
|
||||
</li>
|
||||
</ol>
|
||||
</section>
|
||||
19
crates/lib/md-footnote/tests/fixtures/inline-3.md
vendored
Normal file
19
crates/lib/md-footnote/tests/fixtures/inline-3.md
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
Should allow links in inline footnotes
|
||||
|
||||
......
|
||||
|
||||
Example^[this is another example [a]]
|
||||
|
||||
[a]: https://github.com
|
||||
|
||||
......
|
||||
|
||||
<p data-sourcepos="1:1-1:37">Example<sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup></p>
|
||||
<hr class="footnotes-sep">
|
||||
<section class="footnotes">
|
||||
<ol class="footnotes-list">
|
||||
<li id="fn1" class="footnote-item">
|
||||
<p>this is another example <a data-sourcepos="1:34-1:36" href="https://github.com">a</a> <a href="#fnref1" class="footnote-backref">↩︎</a></p>
|
||||
</li>
|
||||
</ol>
|
||||
</section>
|
||||
19
crates/lib/md-footnote/tests/fixtures/inline-4.md
vendored
Normal file
19
crates/lib/md-footnote/tests/fixtures/inline-4.md
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
nested inline footnotes
|
||||
|
||||
......
|
||||
|
||||
[Example^[this is another example [a]]][a]
|
||||
|
||||
[a]: https://github.com
|
||||
|
||||
......
|
||||
|
||||
<p data-sourcepos="1:1-1:42"><a data-sourcepos="1:1-1:42" href="https://github.com">Example<sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup></a></p>
|
||||
<hr class="footnotes-sep">
|
||||
<section class="footnotes">
|
||||
<ol class="footnotes-list">
|
||||
<li id="fn1" class="footnote-item">
|
||||
<p>this is another example <a data-sourcepos="1:35-1:37" href="https://github.com">a</a> <a href="#fnref1" class="footnote-backref">↩︎</a></p>
|
||||
</li>
|
||||
</ol>
|
||||
</section>
|
||||
Reference in New Issue
Block a user