securemark 0.297.4 → 0.297.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +8 -0
- package/dist/index.js +176 -67
- package/package.json +1 -1
- package/src/combinator/data/parser/context.ts +26 -4
- package/src/parser/api/parse.test.ts +37 -1
- package/src/parser/block/blockquote.ts +1 -1
- package/src/parser/block/heading.test.ts +2 -2
- package/src/parser/block/sidefence.ts +4 -3
- package/src/parser/block/table.test.ts +2 -2
- package/src/parser/block/table.ts +1 -1
- package/src/parser/block.ts +2 -1
- package/src/parser/context.ts +21 -2
- package/src/parser/inline/annotation.test.ts +20 -16
- package/src/parser/inline/annotation.ts +78 -28
- package/src/parser/inline/bracket.test.ts +48 -48
- package/src/parser/inline/bracket.ts +8 -8
- package/src/parser/inline/emphasis.test.ts +2 -2
- package/src/parser/inline/emstrong.test.ts +3 -3
- package/src/parser/inline/extension/index.test.ts +1 -1
- package/src/parser/inline/italic.test.ts +1 -1
- package/src/parser/inline/link.test.ts +1 -1
- package/src/parser/inline/reference.test.ts +1 -1
- package/src/parser/inline/strong.test.ts +2 -2
- package/src/parser/inline.test.ts +23 -23
- package/src/parser/processor/note.test.ts +15 -37
- package/src/parser/processor/note.ts +2 -1
- package/src/renderer/render.ts +0 -1
|
@@ -37,9 +37,9 @@ describe('Unit: parser/inline/emstrong', () => {
|
|
|
37
37
|
|
|
38
38
|
it('nest', () => {
|
|
39
39
|
assert.deepStrictEqual(inspect(parser, input('***`a`***', new Context())), [['<em><strong><code data-src="`a`">a</code></strong></em>'], '']);
|
|
40
|
-
assert.deepStrictEqual(inspect(parser, input('***(*a*)***', new Context())), [['<em><strong><span class="
|
|
41
|
-
assert.deepStrictEqual(inspect(parser, input('***(**a**)***', new Context())), [['<em><strong><span class="
|
|
42
|
-
assert.deepStrictEqual(inspect(parser, input('***(***a***)***', new Context())), [['<em><strong><span class="
|
|
40
|
+
assert.deepStrictEqual(inspect(parser, input('***(*a*)***', new Context())), [['<em><strong><span class="bracket">(<em>a</em>)</span></strong></em>'], '']);
|
|
41
|
+
assert.deepStrictEqual(inspect(parser, input('***(**a**)***', new Context())), [['<em><strong><span class="bracket">(<strong>a</strong>)</span></strong></em>'], '']);
|
|
42
|
+
assert.deepStrictEqual(inspect(parser, input('***(***a***)***', new Context())), [['<em><strong><span class="bracket">(<em><strong>a</strong></em>)</span></strong></em>'], '']);
|
|
43
43
|
assert.deepStrictEqual(inspect(parser, input('***a*', new Context())), [['**', '<em>a</em>'], '']);
|
|
44
44
|
assert.deepStrictEqual(inspect(parser, input('***a*b', new Context())), [['**', '<em>a</em>', 'b'], '']);
|
|
45
45
|
assert.deepStrictEqual(inspect(parser, input('***a*b*', new Context())), [['**', '<em>a</em>', 'b'], '*']);
|
|
@@ -72,7 +72,7 @@ describe('Unit: parser/inline/extension/index', () => {
|
|
|
72
72
|
assert.deepStrictEqual(inspect(parser, input('[#!http://host]', new Context())), [['<a class="index" href="#index::!http://host">!http://host</a>'], '']);
|
|
73
73
|
assert.deepStrictEqual(inspect(parser, input('[#[% %]]', new Context())), [['<a class="index"><span class="remark"><input type="checkbox"><span>[% %]</span></span></a>'], '']);
|
|
74
74
|
assert.deepStrictEqual(inspect(parser, input('[#[% a %]]', new Context())), [['<a class="index"><span class="remark"><input type="checkbox"><span>[% a %]</span></span></a>'], '']);
|
|
75
|
-
assert.deepStrictEqual(inspect(parser, input('[#a((b))]', new Context())), [['<a class="index" href="#index::a((b))">a<span class="paren">(
|
|
75
|
+
assert.deepStrictEqual(inspect(parser, input('[#a((b))]', new Context())), [['<a class="index" href="#index::a((b))">a<span class="bracket">(<span class="paren">(b)</span>)</span></a>'], '']);
|
|
76
76
|
assert.deepStrictEqual(inspect(parser, input('[#a[[b]]]', new Context())), [['<a class="index" href="#index::a[[b]]">a[[b]]</a>'], '']);
|
|
77
77
|
});
|
|
78
78
|
|
|
@@ -67,7 +67,7 @@ describe('Unit: parser/inline/italic', () => {
|
|
|
67
67
|
assert.deepStrictEqual(inspect(parser, input('///a	///b//////', new Context())), [['<i>a\t<i>b</i></i>'], '']);
|
|
68
68
|
assert.deepStrictEqual(inspect(parser, input('///a<wbr>///b//////', new Context())), [['<i>a<wbr><i>b</i></i>'], '']);
|
|
69
69
|
assert.deepStrictEqual(inspect(parser, input('///`a`///', new Context())), [['<i><code data-src="`a`">a</code></i>'], '']);
|
|
70
|
-
assert.deepStrictEqual(inspect(parser, input('///(///a///)///', new Context())), [['<i><span class="
|
|
70
|
+
assert.deepStrictEqual(inspect(parser, input('///(///a///)///', new Context())), [['<i><span class="bracket">(<i>a</i>)</span></i>'], '']);
|
|
71
71
|
assert.deepStrictEqual(inspect(parser, input('///{http://host/}///', new Context())), [['<i><a class="url" href="http://host/" target="_blank">http://host/</a></i>'], '']);
|
|
72
72
|
});
|
|
73
73
|
|
|
@@ -177,7 +177,7 @@ describe('Unit: parser/inline/link', () => {
|
|
|
177
177
|
assert.deepStrictEqual(inspect(parser, input('[[![]{a}]{a}]{a}', new Context())), [['<a class="link" href="a">[![]{a}]{a}</a>'], '']);
|
|
178
178
|
assert.deepStrictEqual(inspect(parser, input('[[![]{a}]{a}]{b}', new Context())), [['<a class="link" href="b">[![]{a}]{a}</a>'], '']);
|
|
179
179
|
assert.deepStrictEqual(inspect(parser, input('[[![]{a}]{b}]{b}', new Context())), [['<a class="link" href="b">[![]{a}]{b}</a>'], '']);
|
|
180
|
-
assert.deepStrictEqual(inspect(parser, input('[((a))]{b}', new Context())), [['<a class="link" href="b"><span class="paren">(
|
|
180
|
+
assert.deepStrictEqual(inspect(parser, input('[((a))]{b}', new Context())), [['<a class="link" href="b"><span class="bracket">(<span class="paren">(a)</span>)</span></a>'], '']);
|
|
181
181
|
assert.deepStrictEqual(inspect(parser, input('[[[a]]]{b}', new Context())), [['<a class="link" href="b">[[a]]</a>'], '']);
|
|
182
182
|
assert.deepStrictEqual(inspect(parser, input('[#a]{b}', new Context())), [['<a class="link" href="b">#a</a>'], '']);
|
|
183
183
|
assert.deepStrictEqual(inspect(parser, input('[@a]{b}', new Context())), [['<a class="link" href="b">@a</a>'], '']);
|
|
@@ -53,7 +53,7 @@ describe('Unit: parser/inline/reference', () => {
|
|
|
53
53
|
assert.deepStrictEqual(inspect(parser, input('[[![]{a}]]', new Context())), [['<sup class="reference"><span>!<a class="url" href="a">a</a></span></sup>'], '']);
|
|
54
54
|
assert.deepStrictEqual(inspect(parser, input('[[[a]]]', new Context())), [['<sup class="reference"><span>[a]</span></sup>'], '']);
|
|
55
55
|
assert.deepStrictEqual(inspect(parser, input('[[[[a]]]]', new Context())), [['<sup class="reference"><span>[[a]]</span></sup>'], '']);
|
|
56
|
-
assert.deepStrictEqual(inspect(parser, input('[[((a))]]', new Context())), [['<sup class="reference"><span><span class="paren">(
|
|
56
|
+
assert.deepStrictEqual(inspect(parser, input('[[((a))]]', new Context())), [['<sup class="reference"><span><span class="bracket">(<span class="paren">(a)</span>)</span></span></sup>'], '']);
|
|
57
57
|
});
|
|
58
58
|
|
|
59
59
|
it('abbr', () => {
|
|
@@ -48,8 +48,8 @@ describe('Unit: parser/inline/strong', () => {
|
|
|
48
48
|
assert.deepStrictEqual(inspect(parser, input('**a*b*c**', new Context())), [['<strong>a<em>b</em>c</strong>'], '']);
|
|
49
49
|
assert.deepStrictEqual(inspect(parser, input('**a*b*c**d', new Context())), [['<strong>a<em>b</em>c</strong>'], 'd']);
|
|
50
50
|
assert.deepStrictEqual(inspect(parser, input('**`a`**', new Context())), [['<strong><code data-src="`a`">a</code></strong>'], '']);
|
|
51
|
-
assert.deepStrictEqual(inspect(parser, input('**(*a*)**', new Context())), [['<strong><span class="
|
|
52
|
-
assert.deepStrictEqual(inspect(parser, input('**(**a**)**', new Context())), [['<strong><span class="
|
|
51
|
+
assert.deepStrictEqual(inspect(parser, input('**(*a*)**', new Context())), [['<strong><span class="bracket">(<em>a</em>)</span></strong>'], '']);
|
|
52
|
+
assert.deepStrictEqual(inspect(parser, input('**(**a**)**', new Context())), [['<strong><span class="bracket">(<strong>a</strong>)</span></strong>'], '']);
|
|
53
53
|
});
|
|
54
54
|
|
|
55
55
|
});
|
|
@@ -20,8 +20,8 @@ describe('Unit: parser/inline', () => {
|
|
|
20
20
|
});
|
|
21
21
|
|
|
22
22
|
it('nest', () => {
|
|
23
|
-
assert.deepStrictEqual(inspect(parser, input('あ(A)', new Context())), [['あ', '
|
|
24
|
-
assert.deepStrictEqual(inspect(parser, input('あ(い)', new Context())), [['あ', '<span class="
|
|
23
|
+
assert.deepStrictEqual(inspect(parser, input('あ(A)', new Context())), [['あ', '<span class="paren">(A)</span>'], '']);
|
|
24
|
+
assert.deepStrictEqual(inspect(parser, input('あ(い)', new Context())), [['あ', '<span class="bracket">(い)</span>'], '']);
|
|
25
25
|
assert.deepStrictEqual(inspect(parser, input('* a*', new Context())), [['* a', '*'], '']);
|
|
26
26
|
assert.deepStrictEqual(inspect(parser, input('** a**', new Context())), [['**', ' a', '**'], '']);
|
|
27
27
|
assert.deepStrictEqual(inspect(parser, input('*** a***', new Context())), [['***', ' a', '***'], '']);
|
|
@@ -73,8 +73,8 @@ describe('Unit: parser/inline', () => {
|
|
|
73
73
|
assert.deepStrictEqual(inspect(parser, input('***a*b*c**', new Context())), [['**', '<em>a</em>', 'b', '<em>c</em>', '*'], '']);
|
|
74
74
|
assert.deepStrictEqual(inspect(parser, input('***a*b*c***', new Context())), [['<strong><em>a</em>b<em>c</em></strong>'], '']);
|
|
75
75
|
assert.deepStrictEqual(inspect(parser, input('***a**b**c***', new Context())), [['<em><strong>a</strong>b<strong>c</strong></em>'], '']);
|
|
76
|
-
assert.deepStrictEqual(inspect(parser, input('*(*a*)*', new Context())), [['<em><span class="
|
|
77
|
-
assert.deepStrictEqual(inspect(parser, input('**(**a**)**', new Context())), [['<strong><span class="
|
|
76
|
+
assert.deepStrictEqual(inspect(parser, input('*(*a*)*', new Context())), [['<em><span class="bracket">(<em>a</em>)</span></em>'], '']);
|
|
77
|
+
assert.deepStrictEqual(inspect(parser, input('**(**a**)**', new Context())), [['<strong><span class="bracket">(<strong>a</strong>)</span></strong>'], '']);
|
|
78
78
|
assert.deepStrictEqual(inspect(parser, input('*[*]', new Context())), [['*', '[', '*', ']'], '']);
|
|
79
79
|
assert.deepStrictEqual(inspect(parser, input('*<*>', new Context())), [['<em><</em>', '>'], '']);
|
|
80
80
|
assert.deepStrictEqual(inspect(parser, input('*a((b))*', new Context())), [['<em>a<sup class="annotation"><span>b</span></sup></em>'], '']);
|
|
@@ -83,11 +83,11 @@ describe('Unit: parser/inline', () => {
|
|
|
83
83
|
assert.deepStrictEqual(inspect(parser, input('*++ a ++*', new Context())), [['<em><ins> a </ins></em>'], '']);
|
|
84
84
|
assert.deepStrictEqual(inspect(parser, input('*<bdi>`a`</bdi>*', new Context())), [['<em><bdi><code data-src="`a`">a</code></bdi></em>'], '']);
|
|
85
85
|
assert.deepStrictEqual(inspect(parser, input('*a"\nb*', new Context())), [['<em>a"<br>b</em>'], '']);
|
|
86
|
-
assert.deepStrictEqual(inspect(parser, input('*a"\n"("b*', new Context())), [['<em>a"<br>"<span class="
|
|
86
|
+
assert.deepStrictEqual(inspect(parser, input('*a"\n"("b*', new Context())), [['<em>a"<br>"<span class="bracket">(</span>"b</em>'], '']);
|
|
87
87
|
assert.deepStrictEqual(inspect(parser, input('"*a\nb*', new Context())), [['"', '*', 'a', '<br>', 'b', '*'], '']);
|
|
88
88
|
assert.deepStrictEqual(inspect(parser, input('"*a\n""b*', new Context())), [['"', '*', 'a', '<br>', '"', '"', 'b', '*'], '']);
|
|
89
89
|
assert.deepStrictEqual(inspect(parser, input('"a\n"*b"c*', new Context())), [['"', 'a', '<br>', '"', '*', 'b', '"', 'c', '*'], '']);
|
|
90
|
-
assert.deepStrictEqual(inspect(parser, input('"*a**b\nc**"("*', new Context())), [['"', '*', 'a', '**', 'b', '<br>', 'c', '**', '"', '<span class="
|
|
90
|
+
assert.deepStrictEqual(inspect(parser, input('"*a**b\nc**"("*', new Context())), [['"', '*', 'a', '**', 'b', '<br>', 'c', '**', '"', '<span class="bracket">(</span>', '"', '*'], '']);
|
|
91
91
|
assert.deepStrictEqual(inspect(parser, input('[% a"\nb %]', new Context())), [['<span class="remark"><input type="checkbox"><span>[% a"<br>b %]</span></span>'], '']);
|
|
92
92
|
assert.deepStrictEqual(inspect(parser, input('"<bdi>"a\n""b</bdi>"', new Context())), [['"', '<span class="invalid"><bdi></span>', '"', 'a', '<br>', '"', '"', 'b', '</bdi', '>', '"'], '']);
|
|
93
93
|
assert.deepStrictEqual(inspect(parser, input('<bdi>*<bdi>a</bdi>*</bdi>', new Context())), [['<bdi><em><bdi>a</bdi></em></bdi>'], '']);
|
|
@@ -106,9 +106,9 @@ describe('Unit: parser/inline', () => {
|
|
|
106
106
|
assert.deepStrictEqual(inspect(parser, input('[[#a]]', new Context())), [['<sup class="reference"><span><a class="hashtag" href="/hashtags/a">#a</a></span></sup>'], '']);
|
|
107
107
|
assert.deepStrictEqual(inspect(parser, input('[[$-1]]', new Context())), [['<sup class="reference"><span><a class="label" data-label="$-1">$-1</a></span></sup>'], '']);
|
|
108
108
|
assert.deepStrictEqual(inspect(parser, input('[[#-1]]{b}', new Context())), [['<sup class="reference"><span>#-1</span></sup>', '<a class="url" href="b">b</a>'], '']);
|
|
109
|
-
assert.deepStrictEqual(inspect(parser, input('[[#-1]](b)', new Context())), [['<sup class="reference"><span>#-1</span></sup>', '(
|
|
109
|
+
assert.deepStrictEqual(inspect(parser, input('[[#-1]](b)', new Context())), [['<sup class="reference"><span>#-1</span></sup>', '<span class="paren">(b)</span>'], '']);
|
|
110
110
|
assert.deepStrictEqual(inspect(parser, input('[[#-1]a]{b}', new Context())), [['<a class="link" href="b">[#-1]a</a>'], '']);
|
|
111
|
-
assert.deepStrictEqual(inspect(parser, input('[[#-1]a](b)', new Context())), [['[', '<a class="index" href="#index::-1">-1</a>', 'a', ']', '(
|
|
111
|
+
assert.deepStrictEqual(inspect(parser, input('[[#-1]a](b)', new Context())), [['[', '<a class="index" href="#index::-1">-1</a>', 'a', ']', '<span class="paren">(b)</span>'], '']);
|
|
112
112
|
assert.deepStrictEqual(inspect(parser, input('[#a]{b}', new Context())), [['<a class="index" href="#index::a">a</a>', '<a class="url" href="b">b</a>'], '']);
|
|
113
113
|
assert.deepStrictEqual(inspect(parser, input('[@a]{b}', new Context())), [['<a class="link" href="b">@a</a>'], '']);
|
|
114
114
|
assert.deepStrictEqual(inspect(parser, input('[http://host]{http://evil}', new Context())), [['<a class="invalid">http://host</a>'], '']);
|
|
@@ -130,24 +130,24 @@ describe('Unit: parser/inline', () => {
|
|
|
130
130
|
assert.deepStrictEqual(inspect(parser, input('${{{a}}}', new Context())), [['$', '<span class="template">{{{a}}}</span>'], '']);
|
|
131
131
|
assert.deepStrictEqual(inspect(parser, input('Di$ney Micro$oft', new Context())), [['Di', '$ney Micro', '$oft'], '']);
|
|
132
132
|
assert.deepStrictEqual(inspect(parser, input('Di$ney, Micro$oft', new Context())), [['Di', '$ney, Micro', '$oft'], '']);
|
|
133
|
-
assert.deepStrictEqual(inspect(parser, input('(((a))', new Context())), [['<span class="
|
|
134
|
-
assert.deepStrictEqual(inspect(parser, input('((((a))', new Context())), [['<span class="
|
|
135
|
-
assert.deepStrictEqual(inspect(parser, input('((${))}$', new Context())), [['<span class="
|
|
136
|
-
assert.deepStrictEqual(inspect(parser, input('((a\nb))', new Context())), [['<span class="
|
|
137
|
-
assert.deepStrictEqual(inspect(parser, input('(((a\nb)))', new Context())), [['<span class="
|
|
133
|
+
assert.deepStrictEqual(inspect(parser, input('(((a))', new Context())), [['<span class="bracket">(<sup class="annotation"><span>a</span></sup></span>'], '']);
|
|
134
|
+
assert.deepStrictEqual(inspect(parser, input('((((a))', new Context())), [['<span class="bracket">(<span class="bracket">(<sup class="annotation"><span>a</span></sup></span></span>'], '']);
|
|
135
|
+
assert.deepStrictEqual(inspect(parser, input('((${))}$', new Context())), [['<span class="bracket">(<span class="bracket">(<span class="math" translate="no" data-src="${))}$">${))}$</span></span></span>'], '']);
|
|
136
|
+
assert.deepStrictEqual(inspect(parser, input('((a\nb))', new Context())), [['<span class="bracket">(<span class="bracket">(a<br>b)</span>)</span>'], '']);
|
|
137
|
+
assert.deepStrictEqual(inspect(parser, input('(((a\nb)))', new Context())), [['<span class="bracket">(<span class="bracket">(<span class="bracket">(a<br>b)</span>)</span>)</span>'], '']);
|
|
138
138
|
assert.deepStrictEqual(inspect(parser, input('(([[a] ]))', new Context())), [['<sup class="annotation"><span>[[a] ]</span></sup>'], '']);
|
|
139
139
|
assert.deepStrictEqual(inspect(parser, input('(([[a] ]{b}))', new Context())), [['<sup class="annotation"><span><a class="link" href="b">[a]</a></span></sup>'], '']);
|
|
140
|
-
assert.deepStrictEqual(inspect(parser, input('(([["*(*"] ]))', new Context())), [['<sup class="annotation"><span>[["*<span class="
|
|
141
|
-
assert.deepStrictEqual(inspect(parser, input('(([:a\n]', new Context())), [['<span class="
|
|
142
|
-
assert.deepStrictEqual(inspect(parser, input('(({{\n}}', new Context())), [['<span class="
|
|
143
|
-
assert.deepStrictEqual(inspect(parser, input('"((""))', new Context())), [['"', '<span class="
|
|
140
|
+
assert.deepStrictEqual(inspect(parser, input('(([["*(*"] ]))', new Context())), [['<sup class="annotation"><span>[["*<span class="bracket">(*</span>"] ]</span></sup>'], '']);
|
|
141
|
+
assert.deepStrictEqual(inspect(parser, input('(([:a\n]', new Context())), [['<span class="bracket">(<span class="bracket">(<span class="invalid">[:a\n]</span></span></span>'], '']);
|
|
142
|
+
assert.deepStrictEqual(inspect(parser, input('(({{\n}}', new Context())), [['<span class="bracket">(<span class="bracket">(<span class="template">{{<br>}}</span></span></span>'], '']);
|
|
143
|
+
assert.deepStrictEqual(inspect(parser, input('"((""))', new Context())), [['"', '<span class="bracket">(<span class="bracket">(</span></span>', '"', '"', ')', ')'], '']);
|
|
144
144
|
assert.deepStrictEqual(inspect(parser, input('[[[a]]', new Context())), [['[', '<sup class="reference"><span>a</span></sup>'], '']);
|
|
145
145
|
assert.deepStrictEqual(inspect(parser, input('[[[[a]]', new Context())), [['[', '[', '<sup class="reference"><span>a</span></sup>'], '']);
|
|
146
146
|
assert.deepStrictEqual(inspect(parser, input('[[[[a]]]]', new Context())), [['<sup class="reference"><span>[[a]]</span></sup>'], '']);
|
|
147
147
|
assert.deepStrictEqual(inspect(parser, input('[[[$-1]]]', new Context())), [['<sup class="reference"><span><a class="label" data-label="$-1">$-1</a></span></sup>'], '']);
|
|
148
148
|
assert.deepStrictEqual(inspect(parser, input('[[[]{a}]]', new Context())), [['<sup class="reference"><span><a class="url" href="a">a</a></span></sup>'], '']);
|
|
149
149
|
assert.deepStrictEqual(inspect(parser, input('[[[a]{b}]]', new Context())), [['<sup class="reference"><span><a class="link" href="b">a</a></span></sup>'], '']);
|
|
150
|
-
assert.deepStrictEqual(inspect(parser, input('[(([a]{#}))]{#}', new Context())), [['<a class="link" href="#"><span class="
|
|
150
|
+
assert.deepStrictEqual(inspect(parser, input('[(([a]{#}))]{#}', new Context())), [['<a class="link" href="#"><span class="bracket">(<span class="bracket">([a]{#})</span>)</span></a>'], '']);
|
|
151
151
|
assert.deepStrictEqual(inspect(parser, input('[[${]]}$', new Context())), [['[', '[', '<span class="math" translate="no" data-src="${]]}$">${]]}$</span>'], '']);
|
|
152
152
|
assert.deepStrictEqual(inspect(parser, input('[[a\nb]]', new Context())), [['[', '[', 'a', '<br>', 'b', ']', ']'], '']);
|
|
153
153
|
assert.deepStrictEqual(inspect(parser, input('[[[a\nb]]]', new Context())), [['[', '[', '[', 'a', '<br>', 'b', ']', ']', ']'], '']);
|
|
@@ -164,8 +164,8 @@ describe('Unit: parser/inline', () => {
|
|
|
164
164
|
assert.deepStrictEqual(inspect(parser, input('"[% *"*"*', new Context())), [['"', '[%', ' ', '*', '"', '*', '"', '*'], '']);
|
|
165
165
|
assert.deepStrictEqual(inspect(parser, input('"[% "*"* %]', new Context())), [['"', '<span class="remark"><input type="checkbox"><span>[% "*"* %]</span></span>'], '']);
|
|
166
166
|
assert.deepStrictEqual(inspect(parser, input('"{{""}}', new Context())), [['"', '{', '<a class="url" href="""">""</a>', '}'], '']);
|
|
167
|
-
assert.deepStrictEqual(inspect(parser, input('[#http://host/(<bdi>)]</bdi>', new Context())), [['<a class="index" href="#index::http://host/(<bdi>)">http://host/<span class="
|
|
168
|
-
assert.deepStrictEqual(inspect(parser, input('[#@a/http://host/(<bdi>)]</bdi>', new Context())), [['<a class="index" href="#index::@a/http://host/(<bdi>)">@a/http://host/<span class="
|
|
167
|
+
assert.deepStrictEqual(inspect(parser, input('[#http://host/(<bdi>)]</bdi>', new Context())), [['<a class="index" href="#index::http://host/(<bdi>)">http://host/<span class="bracket">(<span class="invalid"><bdi></span>)</span></a>', '</bdi', '>'], '']);
|
|
168
|
+
assert.deepStrictEqual(inspect(parser, input('[#@a/http://host/(<bdi>)]</bdi>', new Context())), [['<a class="index" href="#index::@a/http://host/(<bdi>)">@a/http://host/<span class="bracket">(<span class="invalid"><bdi></span>)</span></a>', '</bdi', '>'], '']);
|
|
169
169
|
assert.deepStrictEqual(inspect(parser, input('[#a|<bdi>]</bdi>', new Context())), [['<a class="index" href="#index::a|<bdi>">a|<span class="invalid"><bdi></span></a>', '</bdi', '>'], '']);
|
|
170
170
|
assert.deepStrictEqual(inspect(parser, input('[[#a|<bdi>]</bdi>', new Context())), [['[', '<a class="index" href="#index::a|<bdi>">a|<span class="invalid"><bdi></span></a>', '</bdi', '>'], '']);
|
|
171
171
|
assert.deepStrictEqual(inspect(parser, input('[*==*]{a}', new Context())), [['<a class="link" href="a">*==*</a>'], '']);
|
|
@@ -183,7 +183,7 @@ describe('Unit: parser/inline', () => {
|
|
|
183
183
|
assert.deepStrictEqual(inspect(parser, input('_http://host', new Context())), [['_', '<a class="url" href="http://host" target="_blank">http://host</a>'], '']);
|
|
184
184
|
assert.deepStrictEqual(inspect(parser, input('_http://host_', new Context())), [['_', '<a class="url" href="http://host" target="_blank">http://host</a>', '_'], '']);
|
|
185
185
|
assert.deepStrictEqual(inspect(parser, input('*http://host*', new Context())), [['<em><a class="url" href="http://host" target="_blank">http://host</a></em>'], '']);
|
|
186
|
-
assert.deepStrictEqual(inspect(parser, input('(http://host)', new Context())), [['<span class="
|
|
186
|
+
assert.deepStrictEqual(inspect(parser, input('(http://host)', new Context())), [['<span class="bracket">(<a class="url" href="http://host" target="_blank">http://host</a>)</span>'], '']);
|
|
187
187
|
assert.deepStrictEqual(inspect(parser, input('"http://host"', new Context())), [['"', '<a class="url" href="http://host" target="_blank">http://host</a>', '"'], '']);
|
|
188
188
|
assert.deepStrictEqual(inspect(parser, input('"http://host""', new Context())), [['"', '<a class="url" href="http://host" target="_blank">http://host</a>', '"', '"'], '']);
|
|
189
189
|
assert.deepStrictEqual(inspect(parser, input(' http://host', new Context())), [[' ', '<a class="url" href="http://host" target="_blank">http://host</a>'], '']);
|
|
@@ -196,7 +196,7 @@ describe('Unit: parser/inline', () => {
|
|
|
196
196
|
assert.deepStrictEqual(inspect(parser, input('_a@b_', new Context())), [['_', '<a class="email" href="mailto:a@b">a@b</a>', '_'], '']);
|
|
197
197
|
assert.deepStrictEqual(inspect(parser, input('_a_b@c_', new Context())), [['_', '<a class="email" href="mailto:a_b@c">a_b@c</a>', '_'], '']);
|
|
198
198
|
assert.deepStrictEqual(inspect(parser, input('*a@b*', new Context())), [['<em><a class="email" href="mailto:a@b">a@b</a></em>'], '']);
|
|
199
|
-
assert.deepStrictEqual(inspect(parser, input('(a@b)', new Context())), [['<span class="
|
|
199
|
+
assert.deepStrictEqual(inspect(parser, input('(a@b)', new Context())), [['<span class="bracket">(<a class="email" href="mailto:a@b">a@b</a>)</span>'], '']);
|
|
200
200
|
assert.deepStrictEqual(inspect(parser, input(' a@b', new Context())), [[' ', '<a class="email" href="mailto:a@b">a@b</a>'], '']);
|
|
201
201
|
assert.deepStrictEqual(inspect(parser, input('++a@b++', new Context())), [['<ins><a class="email" href="mailto:a@b">a@b</a></ins>'], '']);
|
|
202
202
|
assert.deepStrictEqual(inspect(parser, input('++a++b@c++', new Context())), [['<ins>a</ins>', '<a class="email" href="mailto:b@c">b@c</a>', '++'], '']);
|
|
@@ -216,7 +216,7 @@ describe('Unit: parser/inline', () => {
|
|
|
216
216
|
assert.deepStrictEqual(inspect(parser, input('_@a', new Context())), [['_', '<a class="account" href="/@a">@a</a>'], '']);
|
|
217
217
|
assert.deepStrictEqual(inspect(parser, input('_@a_', new Context())), [['_', '<a class="account" href="/@a">@a</a>', '_'], '']);
|
|
218
218
|
assert.deepStrictEqual(inspect(parser, input('*@a*', new Context())), [['<em><a class="account" href="/@a">@a</a></em>'], '']);
|
|
219
|
-
assert.deepStrictEqual(inspect(parser, input('(@a)', new Context())), [['<span class="
|
|
219
|
+
assert.deepStrictEqual(inspect(parser, input('(@a)', new Context())), [['<span class="bracket">(<a class="account" href="/@a">@a</a>)</span>'], '']);
|
|
220
220
|
assert.deepStrictEqual(inspect(parser, input(' @a', new Context())), [[' ', '<a class="account" href="/@a">@a</a>'], '']);
|
|
221
221
|
});
|
|
222
222
|
|
|
@@ -222,72 +222,50 @@ describe('Unit: parser/processor/note', () => {
|
|
|
222
222
|
});
|
|
223
223
|
|
|
224
224
|
it('nest', () => {
|
|
225
|
-
const target = parse('((a((b
|
|
225
|
+
const target = parse('((a((b))))((a))((b))');
|
|
226
226
|
for (let i = 0; i < 3; ++i) {
|
|
227
227
|
[...note(target)];
|
|
228
228
|
assert.deepStrictEqual(
|
|
229
229
|
[...target.children].map(el => el.outerHTML),
|
|
230
230
|
[
|
|
231
231
|
html('p', [
|
|
232
|
-
html('sup', { class: 'annotation', id: 'annotation::ref:a((b
|
|
233
|
-
html('a', { href: '#annotation::def:a((b
|
|
232
|
+
html('sup', { class: 'annotation', id: 'annotation::ref:a((b)):1', title: 'a((b))' }, [
|
|
233
|
+
html('a', { href: '#annotation::def:a((b)):1' }, '*1')
|
|
234
234
|
]),
|
|
235
235
|
html('sup', { class: 'annotation', id: 'annotation::ref:a:1', title: 'a' }, [
|
|
236
|
-
html('a', { href: '#annotation::def:a:1' }, '*
|
|
236
|
+
html('a', { href: '#annotation::def:a:1' }, '*3')
|
|
237
237
|
]),
|
|
238
|
-
html('sup', { class: 'annotation', id: 'annotation::ref:b:
|
|
239
|
-
html('a', { href: '#annotation::def:b:1' }, '*
|
|
240
|
-
]),
|
|
241
|
-
html('sup', { class: 'annotation', id: 'annotation::ref:c:2', title: 'c' }, [
|
|
242
|
-
html('a', { href: '#annotation::def:c:1' }, '*3')
|
|
238
|
+
html('sup', { class: 'annotation', id: 'annotation::ref:b:2', title: 'b' }, [
|
|
239
|
+
html('a', { href: '#annotation::def:b:1' }, '*2')
|
|
243
240
|
]),
|
|
244
241
|
]).outerHTML,
|
|
245
242
|
html('ol', { class: 'annotations' }, [
|
|
246
|
-
html('li', { id: 'annotation::def:a((b
|
|
243
|
+
html('li', { id: 'annotation::def:a((b)):1', 'data-marker': '*1' }, [
|
|
247
244
|
html('span', [
|
|
248
245
|
'a',
|
|
249
|
-
html('sup', { class: 'annotation', id: 'annotation::ref:b
|
|
250
|
-
html('a', { href: '#annotation::def:b
|
|
246
|
+
html('sup', { class: 'annotation', id: 'annotation::ref:b:1', title: 'b' }, [
|
|
247
|
+
html('a', { href: '#annotation::def:b:1' }, '*2')
|
|
251
248
|
]),
|
|
252
249
|
]),
|
|
253
250
|
html('sup', [
|
|
254
|
-
html('a', { href: '#annotation::ref:a((b
|
|
251
|
+
html('a', { href: '#annotation::ref:a((b)):1' }, '^1'),
|
|
255
252
|
])
|
|
256
253
|
]),
|
|
257
|
-
html('li', { id: 'annotation::def:b
|
|
254
|
+
html('li', { id: 'annotation::def:b:1', 'data-marker': '*2' }, [
|
|
258
255
|
html('span', [
|
|
259
256
|
'b',
|
|
260
|
-
html('sup', { class: 'annotation', id: 'annotation::ref:c:1', title: 'c' }, [
|
|
261
|
-
html('a', { href: '#annotation::def:c:1' }, '*3')
|
|
262
|
-
]),
|
|
263
|
-
]),
|
|
264
|
-
html('sup', [
|
|
265
|
-
html('a', { href: '#annotation::ref:b((c)):1' }, '^2'),
|
|
266
|
-
])
|
|
267
|
-
]),
|
|
268
|
-
html('li', { id: 'annotation::def:c:1', 'data-marker': '*3' }, [
|
|
269
|
-
html('span', [
|
|
270
|
-
'c',
|
|
271
257
|
]),
|
|
272
258
|
html('sup', [
|
|
273
|
-
html('a', { href: '#annotation::ref:
|
|
274
|
-
html('a', { href: '#annotation::ref:
|
|
259
|
+
html('a', { href: '#annotation::ref:b:1' }, '^2'),
|
|
260
|
+
html('a', { href: '#annotation::ref:b:2' }, '^4'),
|
|
275
261
|
])
|
|
276
262
|
]),
|
|
277
|
-
html('li', { id: 'annotation::def:a:1', 'data-marker': '*
|
|
263
|
+
html('li', { id: 'annotation::def:a:1', 'data-marker': '*3' }, [
|
|
278
264
|
html('span', [
|
|
279
265
|
'a',
|
|
280
266
|
]),
|
|
281
267
|
html('sup', [
|
|
282
|
-
html('a', { href: '#annotation::ref:a:1' }, '^
|
|
283
|
-
])
|
|
284
|
-
]),
|
|
285
|
-
html('li', { id: 'annotation::def:b:1', 'data-marker': '*5' }, [
|
|
286
|
-
html('span', [
|
|
287
|
-
'b',
|
|
288
|
-
]),
|
|
289
|
-
html('sup', [
|
|
290
|
-
html('a', { href: '#annotation::ref:b:1' }, '^5'),
|
|
268
|
+
html('a', { href: '#annotation::ref:a:1' }, '^3'),
|
|
291
269
|
])
|
|
292
270
|
]),
|
|
293
271
|
]).outerHTML,
|
|
@@ -187,7 +187,7 @@ function build(
|
|
|
187
187
|
info.queue.push(ref);
|
|
188
188
|
break;
|
|
189
189
|
}
|
|
190
|
-
|
|
190
|
+
ref.appendChild(html('a', { href: refId && defId && `#${defId}` }, marker(defIndex, abbr)));
|
|
191
191
|
assert(ref.title || ref.matches('.invalid'));
|
|
192
192
|
def.lastElementChild!.appendChild(
|
|
193
193
|
html('a',
|
|
@@ -196,6 +196,7 @@ function build(
|
|
|
196
196
|
title: abbr && text || undefined,
|
|
197
197
|
},
|
|
198
198
|
`^${++refIndex}`));
|
|
199
|
+
yield;
|
|
199
200
|
}
|
|
200
201
|
if (note || defs.size > 0) {
|
|
201
202
|
const splitter = splitters[iSplitters++];
|
package/src/renderer/render.ts
CHANGED
|
@@ -19,7 +19,6 @@ export function render(source: HTMLElement, opts: RenderingOptions = {}): void {
|
|
|
19
19
|
}
|
|
20
20
|
|
|
21
21
|
function render_(base: string, source: HTMLElement, opts: RenderingOptions): void {
|
|
22
|
-
if (source.classList.contains('invalid')) return;
|
|
23
22
|
try {
|
|
24
23
|
switch (true) {
|
|
25
24
|
case !!opts.code
|