securemark 0.265.0 → 0.266.0
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 +5 -0
- package/dist/index.js +23 -17
- package/index.d.ts +2 -1
- package/package.json +1 -1
- package/src/parser/api/bind.test.ts +17 -17
- package/src/parser/api/bind.ts +1 -0
- package/src/parser/api/parse.test.ts +6 -6
- package/src/parser/api/parse.ts +2 -1
- package/src/parser/block/dlist.test.ts +34 -34
- package/src/parser/block/extension/aside.test.ts +3 -3
- package/src/parser/block/extension/aside.ts +2 -2
- package/src/parser/block/extension/figure.test.ts +2 -2
- package/src/parser/block/heading.test.ts +47 -47
- package/src/parser/block/olist.test.ts +29 -29
- package/src/parser/block/reply/cite.test.ts +1 -1
- package/src/parser/block/ulist.test.ts +25 -25
- package/src/parser/inline/extension/index.test.ts +48 -48
- package/src/parser/inline/extension/index.ts +1 -1
- package/src/parser/inline/extension/indexee.ts +14 -11
- package/src/parser/inline/extension/indexer.ts +1 -1
- package/src/parser/inline/mark.test.ts +9 -9
- package/src/parser/inline/mark.ts +1 -1
- package/src/parser/inline.test.ts +4 -4
- package/src/parser/processor/figure.test.ts +19 -19
- package/src/parser/processor/footnote.test.ts +66 -66
- package/src/parser/processor/footnote.ts +11 -11
- package/src/util/toc.test.ts +28 -28
|
@@ -39,12 +39,12 @@ describe('Unit: parser/block/olist', () => {
|
|
|
39
39
|
// filled
|
|
40
40
|
assert.deepStrictEqual(inspect(parser('1. \\')), [['<ol><li></li></ol>'], '']);
|
|
41
41
|
assert.deepStrictEqual(inspect(parser('1. \\\n')), [['<ol><li></li></ol>'], '']);
|
|
42
|
-
assert.deepStrictEqual(inspect(parser('1. -')), [['<ol><li id="index
|
|
43
|
-
assert.deepStrictEqual(inspect(parser('1. -\n')), [['<ol><li id="index
|
|
42
|
+
assert.deepStrictEqual(inspect(parser('1. -')), [['<ol><li id="index::-">-</li></ol>'], '']);
|
|
43
|
+
assert.deepStrictEqual(inspect(parser('1. -\n')), [['<ol><li id="index::-">-</li></ol>'], '']);
|
|
44
44
|
// pending
|
|
45
45
|
assert.deepStrictEqual(inspect(parser('(1) ')), [['<ol data-format="paren"><li></li></ol>'], '']);
|
|
46
46
|
// filled
|
|
47
|
-
assert.deepStrictEqual(inspect(parser('(1) a')), [['<ol data-format="paren"><li id="index
|
|
47
|
+
assert.deepStrictEqual(inspect(parser('(1) a')), [['<ol data-format="paren"><li id="index::a">a</li></ol>'], '']);
|
|
48
48
|
});
|
|
49
49
|
|
|
50
50
|
it('multiple', () => {
|
|
@@ -55,8 +55,8 @@ describe('Unit: parser/block/olist', () => {
|
|
|
55
55
|
assert.deepStrictEqual(inspect(parser('0.\n0. ')), [['<ol><li></li><li></li></ol>'], '']);
|
|
56
56
|
assert.deepStrictEqual(inspect(parser('0.\n0.\n')), [['<ol><li></li><li></li></ol>'], '']);
|
|
57
57
|
// filled
|
|
58
|
-
assert.deepStrictEqual(inspect(parser('0. 1\n0. 2')), [['<ol><li id="index
|
|
59
|
-
assert.deepStrictEqual(inspect(parser('0. 1\n0. 2\n0. 3')), [['<ol><li id="index
|
|
58
|
+
assert.deepStrictEqual(inspect(parser('0. 1\n0. 2')), [['<ol><li id="index::1">1</li><li id="index::2">2</li></ol>'], '']);
|
|
59
|
+
assert.deepStrictEqual(inspect(parser('0. 1\n0. 2\n0. 3')), [['<ol><li id="index::1">1</li><li id="index::2">2</li><li id="index::3">3</li></ol>'], '']);
|
|
60
60
|
// pending
|
|
61
61
|
assert.deepStrictEqual(inspect(parser('(1) \n(')), [['<ol data-format="paren"><li></li><li></li></ol>'], '']);
|
|
62
62
|
assert.deepStrictEqual(inspect(parser('(1) \n(\n')), [['<ol data-format="paren"><li></li><li></li></ol>'], '']);
|
|
@@ -67,21 +67,21 @@ describe('Unit: parser/block/olist', () => {
|
|
|
67
67
|
// filled
|
|
68
68
|
assert.deepStrictEqual(inspect(parser('(1) \n(1) ')), [['<ol data-format="paren"><li></li><li></li></ol>'], '']);
|
|
69
69
|
// invalid
|
|
70
|
-
assert.deepStrictEqual(inspect(parser('0. \n0 ')), [['<ol><li></li><li id="index
|
|
70
|
+
assert.deepStrictEqual(inspect(parser('0. \n0 ')), [['<ol><li></li><li id="index::0"><span class="invalid">0 </span></li></ol>'], '']);
|
|
71
71
|
});
|
|
72
72
|
|
|
73
73
|
it('nest', () => {
|
|
74
74
|
assert.deepStrictEqual(inspect(parser('0.\n 0')), [['<ol><li><br><ol><li></li></ol></li></ol>'], '']);
|
|
75
|
-
assert.deepStrictEqual(inspect(parser('0. 1\n 0')), [['<ol><li id="index
|
|
76
|
-
assert.deepStrictEqual(inspect(parser('0. 1\n 0.')), [['<ol><li id="index
|
|
77
|
-
assert.deepStrictEqual(inspect(parser('0. 1\n 0. ')), [['<ol><li id="index
|
|
78
|
-
assert.deepStrictEqual(inspect(parser('0. 1\n 0.\n')), [['<ol><li id="index
|
|
79
|
-
assert.deepStrictEqual(inspect(parser('0. 1\n 0. 2')), [['<ol><li id="index
|
|
80
|
-
assert.deepStrictEqual(inspect(parser('0. 1\n 0. 2\n0. 3')), [['<ol><li id="index
|
|
81
|
-
assert.deepStrictEqual(inspect(parser('0. 1\n 0. 2\n 0. 3')), [['<ol><li id="index
|
|
82
|
-
assert.deepStrictEqual(inspect(parser('0. 1\n 0. 2\n 0. 3')), [['<ol><li id="index
|
|
83
|
-
assert.deepStrictEqual(inspect(parser('0. 1\n 0. 2\n 0. 3')), [['<ol><li id="index
|
|
84
|
-
assert.deepStrictEqual(inspect(parser('0. !http://host')), [['<ol><li id="index
|
|
75
|
+
assert.deepStrictEqual(inspect(parser('0. 1\n 0')), [['<ol><li id="index::1">1<ol><li></li></ol></li></ol>'], '']);
|
|
76
|
+
assert.deepStrictEqual(inspect(parser('0. 1\n 0.')), [['<ol><li id="index::1">1<ol><li></li></ol></li></ol>'], '']);
|
|
77
|
+
assert.deepStrictEqual(inspect(parser('0. 1\n 0. ')), [['<ol><li id="index::1">1<ol><li></li></ol></li></ol>'], '']);
|
|
78
|
+
assert.deepStrictEqual(inspect(parser('0. 1\n 0.\n')), [['<ol><li id="index::1">1<ol><li></li></ol></li></ol>'], '']);
|
|
79
|
+
assert.deepStrictEqual(inspect(parser('0. 1\n 0. 2')), [['<ol><li id="index::1">1<ol><li id="index::2">2</li></ol></li></ol>'], '']);
|
|
80
|
+
assert.deepStrictEqual(inspect(parser('0. 1\n 0. 2\n0. 3')), [['<ol><li id="index::1">1<ol><li id="index::2">2</li></ol></li><li id="index::3">3</li></ol>'], '']);
|
|
81
|
+
assert.deepStrictEqual(inspect(parser('0. 1\n 0. 2\n 0. 3')), [['<ol><li id="index::1">1<ol><li id="index::2">2</li><li id="index::3">3</li></ol></li></ol>'], '']);
|
|
82
|
+
assert.deepStrictEqual(inspect(parser('0. 1\n 0. 2\n 0. 3')), [['<ol><li id="index::1">1<ol><li id="index::2">2<ol><li id="index::3">3</li></ol></li></ol></li></ol>'], '']);
|
|
83
|
+
assert.deepStrictEqual(inspect(parser('0. 1\n 0. 2\n 0. 3')), [['<ol><li id="index::1">1<ol><li id="index::2">2</li></ol></li><li id="index::0._3"><span class="invalid"> 0. 3</span></li></ol>'], '']);
|
|
84
|
+
assert.deepStrictEqual(inspect(parser('0. !http://host')), [['<ol><li id="index::!http://host">!<a class="url" href="http://host" target="_blank">http://host</a></li></ol>'], '']);
|
|
85
85
|
});
|
|
86
86
|
|
|
87
87
|
it('index', () => {
|
|
@@ -103,11 +103,11 @@ describe('Unit: parser/block/olist', () => {
|
|
|
103
103
|
assert.deepStrictEqual(inspect(parser('(1)-1-1 ')), [['<ol data-format="paren"><li data-marker="(1)-1-1"></li></ol>'], '']);
|
|
104
104
|
assert.deepStrictEqual(inspect(parser('(1) \n(1)-')), [['<ol data-format="paren"><li></li><li data-marker="(1)-"></li></ol>'], '']);
|
|
105
105
|
assert.deepStrictEqual(inspect(parser('(1) \n(1)-1')), [['<ol data-format="paren"><li></li><li data-marker="(1)-1"></li></ol>'], '']);
|
|
106
|
-
assert.deepStrictEqual(inspect(parser('1. \n1--')), [['<ol><li></li><li id="index
|
|
107
|
-
assert.deepStrictEqual(inspect(parser('1. \n1--. ')), [['<ol><li></li><li id="index
|
|
108
|
-
assert.deepStrictEqual(inspect(parser('(1) \n(1)--')), [['<ol data-format="paren"><li></li><li id="index
|
|
109
|
-
assert.deepStrictEqual(inspect(parser('(1) \n(1)-- ')), [['<ol data-format="paren"><li></li><li id="index
|
|
110
|
-
assert.deepStrictEqual(inspect(parser('1-1. 1')), [['<ol><li data-marker="1-1." id="index
|
|
106
|
+
assert.deepStrictEqual(inspect(parser('1. \n1--')), [['<ol><li></li><li id="index::1--"><span class="invalid">1--</span></li></ol>'], '']);
|
|
107
|
+
assert.deepStrictEqual(inspect(parser('1. \n1--. ')), [['<ol><li></li><li id="index::1--."><span class="invalid">1--. </span></li></ol>'], '']);
|
|
108
|
+
assert.deepStrictEqual(inspect(parser('(1) \n(1)--')), [['<ol data-format="paren"><li></li><li id="index::(1)--"><span class="invalid">(1)--</span></li></ol>'], '']);
|
|
109
|
+
assert.deepStrictEqual(inspect(parser('(1) \n(1)-- ')), [['<ol data-format="paren"><li></li><li id="index::(1)--"><span class="invalid">(1)-- </span></li></ol>'], '']);
|
|
110
|
+
assert.deepStrictEqual(inspect(parser('1-1. 1')), [['<ol><li data-marker="1-1." id="index::1">1</li></ol>'], '']);
|
|
111
111
|
});
|
|
112
112
|
|
|
113
113
|
it('type', () => {
|
|
@@ -116,24 +116,24 @@ describe('Unit: parser/block/olist', () => {
|
|
|
116
116
|
assert.deepStrictEqual(inspect(parser('I. ')), [['<ol type="I" data-type="upper-roman"><li></li></ol>'], '']);
|
|
117
117
|
assert.deepStrictEqual(inspect(parser('A. ')), [['<ol type="A" data-type="upper-alpha"><li></li></ol>'], '']);
|
|
118
118
|
assert.deepStrictEqual(inspect(parser('a.\n1.\nc')), [['<ol type="a" data-type="lower-alpha"><li></li><li data-marker="1."></li><li data-marker="c."></li></ol>'], '']);
|
|
119
|
-
assert.deepStrictEqual(inspect(parser('i. 1')), [['<ol type="i" data-type="lower-roman"><li id="index
|
|
119
|
+
assert.deepStrictEqual(inspect(parser('i. 1')), [['<ol type="i" data-type="lower-roman"><li id="index::1">1</li></ol>'], '']);
|
|
120
120
|
});
|
|
121
121
|
|
|
122
122
|
it('checkbox', () => {
|
|
123
123
|
assert.deepStrictEqual(inspect(parser('1. [ ]')), [['<ol class="checklist"><li><span class="checkbox">☐</span></li></ol>'], '']);
|
|
124
124
|
assert.deepStrictEqual(inspect(parser('1. [x]')), [['<ol class="checklist"><li><span class="checkbox">☑</span></li></ol>'], '']);
|
|
125
125
|
assert.deepStrictEqual(inspect(parser('1. [X]')), [['<ol class="checklist"><li><span class="checkbox">☑</span></li></ol>'], '']);
|
|
126
|
-
assert.deepStrictEqual(inspect(parser('1. [X] 1')), [['<ol class="checklist"><li id="index
|
|
126
|
+
assert.deepStrictEqual(inspect(parser('1. [X] 1')), [['<ol class="checklist"><li id="index::1"><span class="checkbox">☑</span>1</li></ol>'], '']);
|
|
127
127
|
});
|
|
128
128
|
|
|
129
129
|
it('indexer', () => {
|
|
130
|
-
assert.deepStrictEqual(inspect(parser('1. [#a]')), [['<ol><li id="index
|
|
130
|
+
assert.deepStrictEqual(inspect(parser('1. [#a]')), [['<ol><li id="index::a"><a class="index" href="#index::a">a</a></li></ol>'], '']);
|
|
131
131
|
assert.deepStrictEqual(inspect(parser('1. a [#]')), [['<ol><li>a<span class="indexer" data-index=""></span></li></ol>'], '']);
|
|
132
|
-
assert.deepStrictEqual(inspect(parser('1. a [#b]')), [['<ol><li id="index
|
|
133
|
-
assert.deepStrictEqual(inspect(parser('1. [ ] [#a]')), [['<ol class="checklist"><li id="index
|
|
134
|
-
assert.deepStrictEqual(inspect(parser('1. [ ] a [#b]')), [['<ol class="checklist"><li id="index
|
|
135
|
-
assert.deepStrictEqual(inspect(parser('1. a [#]\n 1. c [#d]')), [['<ol><li>a<span class="indexer" data-index=""></span><ol><li id="index
|
|
136
|
-
assert.deepStrictEqual(inspect(parser('1. a [#b]\n 1. c [#d]')), [['<ol><li id="index
|
|
132
|
+
assert.deepStrictEqual(inspect(parser('1. a [#b]')), [['<ol><li id="index::b">a<span class="indexer" data-index="b"></span></li></ol>'], '']);
|
|
133
|
+
assert.deepStrictEqual(inspect(parser('1. [ ] [#a]')), [['<ol class="checklist"><li id="index::a"><span class="checkbox">☐</span><a class="index" href="#index::a">a</a></li></ol>'], '']);
|
|
134
|
+
assert.deepStrictEqual(inspect(parser('1. [ ] a [#b]')), [['<ol class="checklist"><li id="index::b"><span class="checkbox">☐</span>a<span class="indexer" data-index="b"></span></li></ol>'], '']);
|
|
135
|
+
assert.deepStrictEqual(inspect(parser('1. a [#]\n 1. c [#d]')), [['<ol><li>a<span class="indexer" data-index=""></span><ol><li id="index::d">c<span class="indexer" data-index="d"></span></li></ol></li></ol>'], '']);
|
|
136
|
+
assert.deepStrictEqual(inspect(parser('1. a [#b]\n 1. c [#d]')), [['<ol><li id="index::b">a<span class="indexer" data-index="b"></span><ol><li id="index::d">c<span class="indexer" data-index="d"></span></li></ol></li></ol>'], '']);
|
|
137
137
|
});
|
|
138
138
|
|
|
139
139
|
});
|
|
@@ -44,7 +44,7 @@ describe('Unit: parser/block/reply/cite', () => {
|
|
|
44
44
|
assert.deepStrictEqual(inspect(parser('>>#')), [['<span class="cite">><a class="anchor" data-depth="1">>#</a></span>', '<br>'], '']);
|
|
45
45
|
assert.deepStrictEqual(inspect(parser('>>#\n')), [['<span class="cite">><a class="anchor" data-depth="1">>#</a></span>', '<br>'], '']);
|
|
46
46
|
assert.deepStrictEqual(inspect(parser('>>#a')), [['<span class="cite">><a class="anchor" data-depth="1">>#a</a></span>', '<br>'], '']);
|
|
47
|
-
assert.deepStrictEqual(inspect(parser('>>#index
|
|
47
|
+
assert.deepStrictEqual(inspect(parser('>>#index::a')), [['<span class="cite">><a class="anchor" data-depth="1">>#index::a</a></span>', '<br>'], '']);
|
|
48
48
|
assert.deepStrictEqual(inspect(parser('>>#:~:text=a')), [['<span class="cite">><a class="anchor" data-depth="1">>#:~:text=a</a></span>', '<br>'], '']);
|
|
49
49
|
assert.deepStrictEqual(inspect(parser('>>http://host')), [['<span class="cite">><a class="anchor" href="http://host" target="_blank" data-depth="1">>http://host</a></span>', '<br>'], '']);
|
|
50
50
|
assert.deepStrictEqual(inspect(parser('>>http://host ')), [['<span class="cite">><a class="anchor" href="http://host" target="_blank" data-depth="1">>http://host</a></span>', '<br>'], '']);
|
|
@@ -28,52 +28,52 @@ describe('Unit: parser/block/ulist', () => {
|
|
|
28
28
|
// filled
|
|
29
29
|
assert.deepStrictEqual(inspect(parser('- \\')), [['<ul><li></li></ul>'], '']);
|
|
30
30
|
assert.deepStrictEqual(inspect(parser('- \\\n')), [['<ul><li></li></ul>'], '']);
|
|
31
|
-
assert.deepStrictEqual(inspect(parser('- -')), [['<ul><li id="index
|
|
32
|
-
assert.deepStrictEqual(inspect(parser('- -\n')), [['<ul><li id="index
|
|
31
|
+
assert.deepStrictEqual(inspect(parser('- -')), [['<ul><li id="index::-">-</li></ul>'], '']);
|
|
32
|
+
assert.deepStrictEqual(inspect(parser('- -\n')), [['<ul><li id="index::-">-</li></ul>'], '']);
|
|
33
33
|
});
|
|
34
34
|
|
|
35
35
|
it('multiple', () => {
|
|
36
36
|
// pending
|
|
37
37
|
assert.deepStrictEqual(inspect(parser('-\n-')), [['<ul><li></li><li></li></ul>'], '']);
|
|
38
38
|
// filled
|
|
39
|
-
assert.deepStrictEqual(inspect(parser('- 1\n- 2')), [['<ul><li id="index
|
|
40
|
-
assert.deepStrictEqual(inspect(parser('- 1\n- 2\n- 3')), [['<ul><li id="index
|
|
39
|
+
assert.deepStrictEqual(inspect(parser('- 1\n- 2')), [['<ul><li id="index::1">1</li><li id="index::2">2</li></ul>'], '']);
|
|
40
|
+
assert.deepStrictEqual(inspect(parser('- 1\n- 2\n- 3')), [['<ul><li id="index::1">1</li><li id="index::2">2</li><li id="index::3">3</li></ul>'], '']);
|
|
41
41
|
// invalid
|
|
42
|
-
assert.deepStrictEqual(inspect(parser('-\n+')), [['<ul><li></li><li id="index
|
|
43
|
-
assert.deepStrictEqual(inspect(parser('-\n0')), [['<ul><li></li><li id="index
|
|
42
|
+
assert.deepStrictEqual(inspect(parser('-\n+')), [['<ul><li></li><li id="index::+"><span class="invalid">+</span></li></ul>'], '']);
|
|
43
|
+
assert.deepStrictEqual(inspect(parser('-\n0')), [['<ul><li></li><li id="index::0"><span class="invalid">0</span></li></ul>'], '']);
|
|
44
44
|
});
|
|
45
45
|
|
|
46
46
|
it('nest', () => {
|
|
47
47
|
assert.deepStrictEqual(inspect(parser('-\n -')), [['<ul><li><br><ul><li></li></ul></li></ul>'], '']);
|
|
48
|
-
assert.deepStrictEqual(inspect(parser('- 1\n - 2')), [['<ul><li id="index
|
|
49
|
-
assert.deepStrictEqual(inspect(parser('- 1\n - 2\n- 3')), [['<ul><li id="index
|
|
50
|
-
assert.deepStrictEqual(inspect(parser('- 1\n - 2\n - 3')), [['<ul><li id="index
|
|
51
|
-
assert.deepStrictEqual(inspect(parser('- 1\n - 2\n - 3')), [['<ul><li id="index
|
|
52
|
-
assert.deepStrictEqual(inspect(parser('- 1\n - 2\n - 3')), [['<ul><li id="index
|
|
53
|
-
assert.deepStrictEqual(inspect(parser('-\n -\n +\n -\n +\n+')), [['<ul><li><br><ul><li></li><li id="index
|
|
54
|
-
assert.deepStrictEqual(inspect(parser('- 1\n + 2')), [['<ul><li id="index
|
|
55
|
-
assert.deepStrictEqual(inspect(parser('- 1\n 0')), [['<ul><li id="index
|
|
56
|
-
assert.deepStrictEqual(inspect(parser('- 1\n 0.')), [['<ul><li id="index
|
|
57
|
-
assert.deepStrictEqual(inspect(parser('- 1\n 0. ')), [['<ul><li id="index
|
|
58
|
-
assert.deepStrictEqual(inspect(parser('- 1\n 0. 2')), [['<ul><li id="index
|
|
59
|
-
assert.deepStrictEqual(inspect(parser('- !http://host')), [['<ul><li id="index
|
|
48
|
+
assert.deepStrictEqual(inspect(parser('- 1\n - 2')), [['<ul><li id="index::1">1<ul><li id="index::2">2</li></ul></li></ul>'], '']);
|
|
49
|
+
assert.deepStrictEqual(inspect(parser('- 1\n - 2\n- 3')), [['<ul><li id="index::1">1<ul><li id="index::2">2</li></ul></li><li id="index::3">3</li></ul>'], '']);
|
|
50
|
+
assert.deepStrictEqual(inspect(parser('- 1\n - 2\n - 3')), [['<ul><li id="index::1">1<ul><li id="index::2">2</li><li id="index::3">3</li></ul></li></ul>'], '']);
|
|
51
|
+
assert.deepStrictEqual(inspect(parser('- 1\n - 2\n - 3')), [['<ul><li id="index::1">1<ul><li id="index::2">2<ul><li id="index::3">3</li></ul></li></ul></li></ul>'], '']);
|
|
52
|
+
assert.deepStrictEqual(inspect(parser('- 1\n - 2\n - 3')), [['<ul><li id="index::1">1<ul><li id="index::2">2</li></ul></li><li id="index::-_3"><span class="invalid"> - 3</span></li></ul>'], '']);
|
|
53
|
+
assert.deepStrictEqual(inspect(parser('-\n -\n +\n -\n +\n+')), [['<ul><li><br><ul><li></li><li id="index::+"><span class="invalid">+</span></li><li></li><li id="index::+"><span class="invalid">+</span></li></ul></li><li id="index::+"><span class="invalid">+</span></li></ul>'], '']);
|
|
54
|
+
assert.deepStrictEqual(inspect(parser('- 1\n + 2')), [['<ul><li id="index::1">1<ul class="invalid"><li>2</li></ul></li></ul>'], '']);
|
|
55
|
+
assert.deepStrictEqual(inspect(parser('- 1\n 0')), [['<ul><li id="index::1">1<ol><li></li></ol></li></ul>'], '']);
|
|
56
|
+
assert.deepStrictEqual(inspect(parser('- 1\n 0.')), [['<ul><li id="index::1">1<ol><li></li></ol></li></ul>'], '']);
|
|
57
|
+
assert.deepStrictEqual(inspect(parser('- 1\n 0. ')), [['<ul><li id="index::1">1<ol><li></li></ol></li></ul>'], '']);
|
|
58
|
+
assert.deepStrictEqual(inspect(parser('- 1\n 0. 2')), [['<ul><li id="index::1">1<ol><li id="index::2">2</li></ol></li></ul>'], '']);
|
|
59
|
+
assert.deepStrictEqual(inspect(parser('- !http://host')), [['<ul><li id="index::!http://host">!<a class="url" href="http://host" target="_blank">http://host</a></li></ul>'], '']);
|
|
60
60
|
});
|
|
61
61
|
|
|
62
62
|
it('checkbox', () => {
|
|
63
63
|
assert.deepStrictEqual(inspect(parser('- [ ]')), [['<ul class="checklist"><li><span class="checkbox">☐</span></li></ul>'], '']);
|
|
64
64
|
assert.deepStrictEqual(inspect(parser('- [x]')), [['<ul class="checklist"><li><span class="checkbox">☑</span></li></ul>'], '']);
|
|
65
65
|
assert.deepStrictEqual(inspect(parser('- [X]')), [['<ul class="checklist"><li><span class="checkbox">☑</span></li></ul>'], '']);
|
|
66
|
-
assert.deepStrictEqual(inspect(parser('- [X] 1')), [['<ul class="checklist"><li id="index
|
|
66
|
+
assert.deepStrictEqual(inspect(parser('- [X] 1')), [['<ul class="checklist"><li id="index::1"><span class="checkbox">☑</span>1</li></ul>'], '']);
|
|
67
67
|
});
|
|
68
68
|
|
|
69
69
|
it('indexer', () => {
|
|
70
|
-
assert.deepStrictEqual(inspect(parser('- [#a]')), [['<ul><li id="index
|
|
70
|
+
assert.deepStrictEqual(inspect(parser('- [#a]')), [['<ul><li id="index::a"><a class="index" href="#index::a">a</a></li></ul>'], '']);
|
|
71
71
|
assert.deepStrictEqual(inspect(parser('- a [#]')), [['<ul><li>a<span class="indexer" data-index=""></span></li></ul>'], '']);
|
|
72
|
-
assert.deepStrictEqual(inspect(parser('- a [#b]')), [['<ul><li id="index
|
|
73
|
-
assert.deepStrictEqual(inspect(parser('- [ ] [#a]')), [['<ul class="checklist"><li id="index
|
|
74
|
-
assert.deepStrictEqual(inspect(parser('- [ ] a [#b]')), [['<ul class="checklist"><li id="index
|
|
75
|
-
assert.deepStrictEqual(inspect(parser('- a [#]\n - c [#d]')), [['<ul><li>a<span class="indexer" data-index=""></span><ul><li id="index
|
|
76
|
-
assert.deepStrictEqual(inspect(parser('- a [#b]\n - c [#d]')), [['<ul><li id="index
|
|
72
|
+
assert.deepStrictEqual(inspect(parser('- a [#b]')), [['<ul><li id="index::b">a<span class="indexer" data-index="b"></span></li></ul>'], '']);
|
|
73
|
+
assert.deepStrictEqual(inspect(parser('- [ ] [#a]')), [['<ul class="checklist"><li id="index::a"><span class="checkbox">☐</span><a class="index" href="#index::a">a</a></li></ul>'], '']);
|
|
74
|
+
assert.deepStrictEqual(inspect(parser('- [ ] a [#b]')), [['<ul class="checklist"><li id="index::b"><span class="checkbox">☐</span>a<span class="indexer" data-index="b"></span></li></ul>'], '']);
|
|
75
|
+
assert.deepStrictEqual(inspect(parser('- a [#]\n - c [#d]')), [['<ul><li>a<span class="indexer" data-index=""></span><ul><li id="index::d">c<span class="indexer" data-index="d"></span></li></ul></li></ul>'], '']);
|
|
76
|
+
assert.deepStrictEqual(inspect(parser('- a [#b]\n - c [#d]')), [['<ul><li id="index::b">a<span class="indexer" data-index="b"></span><ul><li id="index::d">c<span class="indexer" data-index="d"></span></li></ul></li></ul>'], '']);
|
|
77
77
|
});
|
|
78
78
|
|
|
79
79
|
});
|
|
@@ -35,59 +35,59 @@ describe('Unit: parser/inline/extension/index', () => {
|
|
|
35
35
|
});
|
|
36
36
|
|
|
37
37
|
it('basic', () => {
|
|
38
|
-
assert.deepStrictEqual(inspect(parser('[#a]')), [['<a class="index" href="#index
|
|
39
|
-
assert.deepStrictEqual(inspect(parser('[#a ]')), [['<a class="index" href="#index
|
|
40
|
-
assert.deepStrictEqual(inspect(parser('[#a ]')), [['<a class="index" href="#index
|
|
41
|
-
assert.deepStrictEqual(inspect(parser('[#a b]')), [['<a class="index" href="#index
|
|
42
|
-
assert.deepStrictEqual(inspect(parser('[#a b]')), [['<a class="index" href="#index
|
|
43
|
-
assert.deepStrictEqual(inspect(parser('[#a \\ ]')), [['<a class="index" href="#index
|
|
44
|
-
assert.deepStrictEqual(inspect(parser('[#a ]')), [['<a class="index" href="#index
|
|
45
|
-
assert.deepStrictEqual(inspect(parser('[#a <wbr>]')), [['<a class="index" href="#index
|
|
46
|
-
assert.deepStrictEqual(inspect(parser('[#a [% b %]]')), [['<a class="index" href="#index
|
|
47
|
-
assert.deepStrictEqual(inspect(parser('[#a\\ ]')), [['<a class="index" href="#index
|
|
48
|
-
assert.deepStrictEqual(inspect(parser('[#a\\ b]')), [['<a class="index" href="#index
|
|
49
|
-
assert.deepStrictEqual(inspect(parser('[#[]]')), [['<a class="index" href="#index
|
|
50
|
-
assert.deepStrictEqual(inspect(parser('[#\\]]')), [['<a class="index" href="#index
|
|
51
|
-
assert.deepStrictEqual(inspect(parser('[#\\\\]')), [['<a class="index" href="#index
|
|
52
|
-
assert.deepStrictEqual(inspect(parser('[#A]')), [['<a class="index" href="#index
|
|
53
|
-
assert.deepStrictEqual(inspect(parser('[#==]')), [['<a class="index" href="#index
|
|
54
|
-
assert.deepStrictEqual(inspect(parser('[#_A_]')), [['<a class="index" href="#index
|
|
55
|
-
assert.deepStrictEqual(inspect(parser('[#`A`]')), [['<a class="index" href="#index
|
|
56
|
-
assert.deepStrictEqual(inspect(parser('[#${A}$]')), [['<a class="index" href="#index
|
|
57
|
-
assert.deepStrictEqual(inspect(parser('[#[A](a)]')), [['<a class="index" href="#index
|
|
58
|
-
assert.deepStrictEqual(inspect(parser('[#[]{a}]')), [['<a class="index" href="#index
|
|
59
|
-
assert.deepStrictEqual(inspect(parser('[#![]{a}]')), [['<a class="index" href="#index
|
|
60
|
-
assert.deepStrictEqual(inspect(parser('[#@a]')), [['<a class="index" href="#index
|
|
61
|
-
assert.deepStrictEqual(inspect(parser('[#http://host]')), [['<a class="index" href="#index
|
|
62
|
-
assert.deepStrictEqual(inspect(parser('[#!http://host]')), [['<a class="index" href="#index
|
|
38
|
+
assert.deepStrictEqual(inspect(parser('[#a]')), [['<a class="index" href="#index::a">a</a>'], '']);
|
|
39
|
+
assert.deepStrictEqual(inspect(parser('[#a ]')), [['<a class="index" href="#index::a">a</a>'], '']);
|
|
40
|
+
assert.deepStrictEqual(inspect(parser('[#a ]')), [['<a class="index" href="#index::a">a</a>'], '']);
|
|
41
|
+
assert.deepStrictEqual(inspect(parser('[#a b]')), [['<a class="index" href="#index::a_b">a b</a>'], '']);
|
|
42
|
+
assert.deepStrictEqual(inspect(parser('[#a b]')), [['<a class="index" href="#index::a_b">a b</a>'], '']);
|
|
43
|
+
assert.deepStrictEqual(inspect(parser('[#a \\ ]')), [['<a class="index" href="#index::a">a</a>'], '']);
|
|
44
|
+
assert.deepStrictEqual(inspect(parser('[#a ]')), [['<a class="index" href="#index::a">a</a>'], '']);
|
|
45
|
+
assert.deepStrictEqual(inspect(parser('[#a <wbr>]')), [['<a class="index" href="#index::a">a</a>'], '']);
|
|
46
|
+
assert.deepStrictEqual(inspect(parser('[#a [% b %]]')), [['<a class="index" href="#index::a">a <span class="comment"><input type="checkbox"><span>[% b %]</span></span></a>'], '']);
|
|
47
|
+
assert.deepStrictEqual(inspect(parser('[#a\\ ]')), [['<a class="index" href="#index::a">a</a>'], '']);
|
|
48
|
+
assert.deepStrictEqual(inspect(parser('[#a\\ b]')), [['<a class="index" href="#index::a_b">a b</a>'], '']);
|
|
49
|
+
assert.deepStrictEqual(inspect(parser('[#[]]')), [['<a class="index" href="#index::[]">[]</a>'], '']);
|
|
50
|
+
assert.deepStrictEqual(inspect(parser('[#\\]]')), [['<a class="index" href="#index::]">]</a>'], '']);
|
|
51
|
+
assert.deepStrictEqual(inspect(parser('[#\\\\]')), [['<a class="index" href="#index::\\">\\</a>'], '']);
|
|
52
|
+
assert.deepStrictEqual(inspect(parser('[#A]')), [['<a class="index" href="#index::A">A</a>'], '']);
|
|
53
|
+
assert.deepStrictEqual(inspect(parser('[#==]')), [['<a class="index" href="#index::==">==</a>'], '']);
|
|
54
|
+
assert.deepStrictEqual(inspect(parser('[#_A_]')), [['<a class="index" href="#index::A"><em>A</em></a>'], '']);
|
|
55
|
+
assert.deepStrictEqual(inspect(parser('[#`A`]')), [['<a class="index" href="#index::`A`"><code data-src="`A`">A</code></a>'], '']);
|
|
56
|
+
assert.deepStrictEqual(inspect(parser('[#${A}$]')), [['<a class="index" href="#index::${A}$"><span class="math" translate="no" data-src="${A}$">${A}$</span></a>'], '']);
|
|
57
|
+
assert.deepStrictEqual(inspect(parser('[#[A](a)]')), [['<a class="index" href="#index::A"><ruby>A<rp>(</rp><rt>a</rt><rp>)</rp></ruby></a>'], '']);
|
|
58
|
+
assert.deepStrictEqual(inspect(parser('[#[]{a}]')), [['<a class="index" href="#index::[]{a}">[]{a}</a>'], '']);
|
|
59
|
+
assert.deepStrictEqual(inspect(parser('[#![]{a}]')), [['<a class="index" href="#index::![]{a}">![]{a}</a>'], '']);
|
|
60
|
+
assert.deepStrictEqual(inspect(parser('[#@a]')), [['<a class="index" href="#index::@a">@a</a>'], '']);
|
|
61
|
+
assert.deepStrictEqual(inspect(parser('[#http://host]')), [['<a class="index" href="#index::http://host">http://host</a>'], '']);
|
|
62
|
+
assert.deepStrictEqual(inspect(parser('[#!http://host]')), [['<a class="index" href="#index::!http://host">!http://host</a>'], '']);
|
|
63
63
|
assert.deepStrictEqual(inspect(parser('[#[% %]]')), [['<a class="index"><span class="comment"><input type="checkbox"><span>[% %]</span></span></a>'], '']);
|
|
64
64
|
assert.deepStrictEqual(inspect(parser('[#[% a %]]')), [['<a class="index"><span class="comment"><input type="checkbox"><span>[% a %]</span></span></a>'], '']);
|
|
65
|
-
assert.deepStrictEqual(inspect(parser('[#a((b))]')), [['<a class="index" href="#index
|
|
66
|
-
assert.deepStrictEqual(inspect(parser('[#a[[b]]]')), [['<a class="index" href="#index
|
|
65
|
+
assert.deepStrictEqual(inspect(parser('[#a((b))]')), [['<a class="index" href="#index::a((b))">a<span class="paren">((b))</span></a>'], '']);
|
|
66
|
+
assert.deepStrictEqual(inspect(parser('[#a[[b]]]')), [['<a class="index" href="#index::a[[b]]">a[[b]]</a>'], '']);
|
|
67
67
|
});
|
|
68
68
|
|
|
69
69
|
it('indexer', () => {
|
|
70
|
-
assert.deepStrictEqual(inspect(parser('[#|]')), [['<a class="index" href="#index
|
|
71
|
-
assert.deepStrictEqual(inspect(parser('[#|b]')), [['<a class="index" href="#index
|
|
72
|
-
assert.deepStrictEqual(inspect(parser('[#a|]')), [['<a class="index" href="#index
|
|
73
|
-
assert.deepStrictEqual(inspect(parser('[#a| ]')), [['<a class="index" href="#index
|
|
74
|
-
assert.deepStrictEqual(inspect(parser('[#a|\\ ]')), [['<a class="index" href="#index
|
|
75
|
-
assert.deepStrictEqual(inspect(parser('[#a|b]')), [['<a class="index" href="#index
|
|
76
|
-
assert.deepStrictEqual(inspect(parser('[#a|b ]')), [['<a class="index" href="#index
|
|
77
|
-
assert.deepStrictEqual(inspect(parser('[#a|b ]')), [['<a class="index" href="#index
|
|
78
|
-
assert.deepStrictEqual(inspect(parser('[#a|\\b]')), [['<a class="index" href="#index
|
|
79
|
-
assert.deepStrictEqual(inspect(parser('[#a|_b_]')), [['<a class="index" href="#index
|
|
80
|
-
assert.deepStrictEqual(inspect(parser('[#a|b c]')), [['<a class="index" href="#index
|
|
81
|
-
assert.deepStrictEqual(inspect(parser('[#a|b c]')), [['<a class="index" href="#index
|
|
82
|
-
assert.deepStrictEqual(inspect(parser('[#a|[]]')), [['<a class="index" href="#index
|
|
83
|
-
assert.deepStrictEqual(inspect(parser('[#a|©]')), [['<a class="index" href="#index
|
|
84
|
-
assert.deepStrictEqual(inspect(parser('[#a |b]')), [['<a class="index" href="#index
|
|
85
|
-
assert.deepStrictEqual(inspect(parser('[#a |b]')), [['<a class="index" href="#index
|
|
86
|
-
assert.deepStrictEqual(inspect(parser('[#a \\ |b]')), [['<a class="index" href="#index
|
|
87
|
-
assert.deepStrictEqual(inspect(parser('[#a |b]')), [['<a class="index" href="#index
|
|
88
|
-
assert.deepStrictEqual(inspect(parser('[#a <wbr>|b]')), [['<a class="index" href="#index
|
|
89
|
-
assert.deepStrictEqual(inspect(parser('[#a [% b %]|c]')), [['<a class="index" href="#index
|
|
90
|
-
assert.deepStrictEqual(inspect(parser('[#a\\ |b]')), [['<a class="index" href="#index
|
|
70
|
+
assert.deepStrictEqual(inspect(parser('[#|]')), [['<a class="index" href="#index::|">|</a>'], '']);
|
|
71
|
+
assert.deepStrictEqual(inspect(parser('[#|b]')), [['<a class="index" href="#index::|b">|b</a>'], '']);
|
|
72
|
+
assert.deepStrictEqual(inspect(parser('[#a|]')), [['<a class="index" href="#index::a|">a|</a>'], '']);
|
|
73
|
+
assert.deepStrictEqual(inspect(parser('[#a| ]')), [['<a class="index" href="#index::a|">a|</a>'], '']);
|
|
74
|
+
assert.deepStrictEqual(inspect(parser('[#a|\\ ]')), [['<a class="index" href="#index::a|">a|</a>'], '']);
|
|
75
|
+
assert.deepStrictEqual(inspect(parser('[#a|b]')), [['<a class="index" href="#index::b">a<span class="indexer" data-index="b"></span></a>'], '']);
|
|
76
|
+
assert.deepStrictEqual(inspect(parser('[#a|b ]')), [['<a class="index" href="#index::b">a<span class="indexer" data-index="b"></span></a>'], '']);
|
|
77
|
+
assert.deepStrictEqual(inspect(parser('[#a|b ]')), [['<a class="index" href="#index::b">a<span class="indexer" data-index="b"></span></a>'], '']);
|
|
78
|
+
assert.deepStrictEqual(inspect(parser('[#a|\\b]')), [['<a class="index" href="#index::b">a<span class="indexer" data-index="b"></span></a>'], '']);
|
|
79
|
+
assert.deepStrictEqual(inspect(parser('[#a|_b_]')), [['<a class="index" href="#index::_b_">a<span class="indexer" data-index="_b_"></span></a>'], '']);
|
|
80
|
+
assert.deepStrictEqual(inspect(parser('[#a|b c]')), [['<a class="index" href="#index::b_c">a<span class="indexer" data-index="b_c"></span></a>'], '']);
|
|
81
|
+
assert.deepStrictEqual(inspect(parser('[#a|b c]')), [['<a class="index" href="#index::b_c">a<span class="indexer" data-index="b_c"></span></a>'], '']);
|
|
82
|
+
assert.deepStrictEqual(inspect(parser('[#a|[]]')), [['<a class="index" href="#index::[]">a<span class="indexer" data-index="[]"></span></a>'], '']);
|
|
83
|
+
assert.deepStrictEqual(inspect(parser('[#a|©]')), [['<a class="index" href="#index::&copy;">a<span class="indexer" data-index="&copy;"></span></a>'], '']);
|
|
84
|
+
assert.deepStrictEqual(inspect(parser('[#a |b]')), [['<a class="index" href="#index::b">a<span class="indexer" data-index="b"></span></a>'], '']);
|
|
85
|
+
assert.deepStrictEqual(inspect(parser('[#a |b]')), [['<a class="index" href="#index::b">a<span class="indexer" data-index="b"></span></a>'], '']);
|
|
86
|
+
assert.deepStrictEqual(inspect(parser('[#a \\ |b]')), [['<a class="index" href="#index::b">a<span class="indexer" data-index="b"></span></a>'], '']);
|
|
87
|
+
assert.deepStrictEqual(inspect(parser('[#a |b]')), [['<a class="index" href="#index::b">a<span class="indexer" data-index="b"></span></a>'], '']);
|
|
88
|
+
assert.deepStrictEqual(inspect(parser('[#a <wbr>|b]')), [['<a class="index" href="#index::b">a<span class="indexer" data-index="b"></span></a>'], '']);
|
|
89
|
+
assert.deepStrictEqual(inspect(parser('[#a [% b %]|c]')), [['<a class="index" href="#index::c">a <span class="comment"><input type="checkbox"><span>[% b %]</span></span><span class="indexer" data-index="c"></span></a>'], '']);
|
|
90
|
+
assert.deepStrictEqual(inspect(parser('[#a\\ |b]')), [['<a class="index" href="#index::b">a<span class="indexer" data-index="b"></span></a>'], '']);
|
|
91
91
|
});
|
|
92
92
|
|
|
93
93
|
});
|
|
@@ -35,7 +35,7 @@ const signature: IndexParser.SignatureParser = lazy(() => creation(fmap(open(
|
|
|
35
35
|
'|',
|
|
36
36
|
startTight(some(union([bracket, txt]), ']'))),
|
|
37
37
|
ns => [
|
|
38
|
-
html('span', { class: 'indexer', 'data-index': identity(ns.join(''))
|
|
38
|
+
html('span', { class: 'indexer', 'data-index': identity(undefined, ns.join(''))!.slice(7) }),
|
|
39
39
|
])));
|
|
40
40
|
|
|
41
41
|
const bracket: IndexParser.SignatureParser.BracketParser = lazy(() => creation(union([
|
|
@@ -5,26 +5,29 @@ import { define } from 'typed-dom/dom';
|
|
|
5
5
|
|
|
6
6
|
export function indexee<P extends Parser<unknown, MarkdownParser.Context>>(parser: P, optional?: boolean): P;
|
|
7
7
|
export function indexee(parser: Parser<HTMLElement, MarkdownParser.Context>, optional?: boolean): Parser<HTMLElement> {
|
|
8
|
-
return fmap(parser, ([el], _, { id }) => [define(el, { id: id
|
|
8
|
+
return fmap(parser, ([el], _, { id }) => [define(el, { id: identity(id, text(el, optional)) })]);
|
|
9
9
|
}
|
|
10
10
|
|
|
11
|
-
export function identity(text: string, name: 'index' | 'mark' = 'index'): string {
|
|
11
|
+
export function identity(id: string | undefined, text: string, name: 'index' | 'mark' = 'index'): string | undefined {
|
|
12
12
|
assert(!text.includes('\n'));
|
|
13
|
+
if (id === '') return undefined;
|
|
13
14
|
text &&= text.trim().replace(/\s+/g, '_');
|
|
14
|
-
if (text
|
|
15
|
+
if (text === '') return undefined;
|
|
16
|
+
if (text.length <= 100) return `${name}:${id ?? ''}:${text}`;
|
|
15
17
|
switch (name) {
|
|
16
18
|
case 'index':
|
|
17
|
-
return `${name}:${text.slice(0, 97)}...`;
|
|
19
|
+
return `${name}:${id ?? ''}:${text.slice(0, 97)}...`;
|
|
18
20
|
case 'mark':
|
|
19
|
-
return `${name}:${text.slice(0, 50)}...${text.slice(-47)}`;
|
|
21
|
+
return `${name}:${id ?? ''}:${text.slice(0, 50)}...${text.slice(-47)}`;
|
|
20
22
|
}
|
|
23
|
+
assert(false);
|
|
21
24
|
}
|
|
22
|
-
assert(identity('0'.repeat(100 - 1) + 1)
|
|
23
|
-
assert(identity('0'.repeat(100) + 1)
|
|
24
|
-
assert(identity('0'.repeat(200) + 1)
|
|
25
|
-
assert(identity('0'.repeat(100 - 1) + 1, 'mark')
|
|
26
|
-
assert(identity('0'.repeat(100) + 1, 'mark')
|
|
27
|
-
assert(identity('0'.repeat(200) + 1, 'mark')
|
|
25
|
+
assert(identity(undefined, '0'.repeat(100 - 1) + 1)!.slice(7) === '0'.repeat(100 - 1) + 1);
|
|
26
|
+
assert(identity(undefined, '0'.repeat(100) + 1)!.slice(7) === '0'.repeat(97) + '...');
|
|
27
|
+
assert(identity(undefined, '0'.repeat(200) + 1)!.slice(7) === '0'.repeat(97) + '...');
|
|
28
|
+
assert(identity(undefined, '0'.repeat(100 - 1) + 1, 'mark')!.slice(6) === '0'.repeat(100 - 1) + 1);
|
|
29
|
+
assert(identity(undefined, '0'.repeat(100) + 1, 'mark')!.slice(6) === '0'.repeat(50) + '...' + '0'.repeat(47 - 1) + 1);
|
|
30
|
+
assert(identity(undefined, '0'.repeat(200) + 1, 'mark')!.slice(6) === '0'.repeat(50) + '...' + '0'.repeat(47 - 1) + 1);
|
|
28
31
|
|
|
29
32
|
export function text(source: HTMLElement | DocumentFragment, optional = false): string {
|
|
30
33
|
assert(source instanceof DocumentFragment || !source.matches('.indexer'));
|
|
@@ -15,5 +15,5 @@ export const indexer: ExtensionParser.IndexerParser = creation(fmap(verify(surro
|
|
|
15
15
|
// Indexer is invisible but invalids must be visible.
|
|
16
16
|
([el]) => el.getElementsByClassName('invalid').length === 0),
|
|
17
17
|
([el]) => [
|
|
18
|
-
html('span', { class: 'indexer', 'data-index': el.getAttribute('href')!.slice(
|
|
18
|
+
html('span', { class: 'indexer', 'data-index': el.getAttribute('href')!.slice(1).replace(/^\w+:\w*:/, '') }),
|
|
19
19
|
]));
|
|
@@ -29,18 +29,18 @@ describe('Unit: parser/inline/mark', () => {
|
|
|
29
29
|
});
|
|
30
30
|
|
|
31
31
|
it('basic', () => {
|
|
32
|
-
assert.deepStrictEqual(inspect(parser('==a==')), [['<mark id="mark
|
|
33
|
-
assert.deepStrictEqual(inspect(parser('==a=b==')), [['<mark id="mark
|
|
34
|
-
assert.deepStrictEqual(inspect(parser('==\\===')), [['<mark id="mark
|
|
35
|
-
assert.deepStrictEqual(inspect(parser('==a===')), [['<mark id="mark
|
|
32
|
+
assert.deepStrictEqual(inspect(parser('==a==')), [['<mark id="mark::a">a</mark>', '<a href="#mark::a"></a>'], '']);
|
|
33
|
+
assert.deepStrictEqual(inspect(parser('==a=b==')), [['<mark id="mark::a=b">a=b</mark>', '<a href="#mark::a=b"></a>'], '']);
|
|
34
|
+
assert.deepStrictEqual(inspect(parser('==\\===')), [['<mark id="mark::=">=</mark>', '<a href="#mark::="></a>'], '']);
|
|
35
|
+
assert.deepStrictEqual(inspect(parser('==a===')), [['<mark id="mark::a">a</mark>', '<a href="#mark::a"></a>'], '=']);
|
|
36
36
|
});
|
|
37
37
|
|
|
38
38
|
it('nest', () => {
|
|
39
|
-
assert.deepStrictEqual(inspect(parser('==a ==b====')), [['<mark id="mark
|
|
40
|
-
assert.deepStrictEqual(inspect(parser('==a\\ ==b====')), [['<mark id="mark
|
|
41
|
-
assert.deepStrictEqual(inspect(parser('==a	==b====')), [['<mark id="mark
|
|
42
|
-
assert.deepStrictEqual(inspect(parser('==a<wbr>==b====')), [['<mark id="mark
|
|
43
|
-
assert.deepStrictEqual(inspect(parser('==_==a==_==')), [['<mark id="mark
|
|
39
|
+
assert.deepStrictEqual(inspect(parser('==a ==b====')), [['<mark id="mark::a_b">a <mark id="mark::b">b</mark><a href="#mark::b"></a></mark>', '<a href="#mark::a_b"></a>'], '']);
|
|
40
|
+
assert.deepStrictEqual(inspect(parser('==a\\ ==b====')), [['<mark id="mark::a_b">a <mark id="mark::b">b</mark><a href="#mark::b"></a></mark>', '<a href="#mark::a_b"></a>'], '']);
|
|
41
|
+
assert.deepStrictEqual(inspect(parser('==a	==b====')), [['<mark id="mark::a_b">a\t<mark id="mark::b">b</mark><a href="#mark::b"></a></mark>', '<a href="#mark::a_b"></a>'], '']);
|
|
42
|
+
assert.deepStrictEqual(inspect(parser('==a<wbr>==b====')), [['<mark id="mark::ab">a<wbr><mark id="mark::b">b</mark><a href="#mark::b"></a></mark>', '<a href="#mark::ab"></a>'], '']);
|
|
43
|
+
assert.deepStrictEqual(inspect(parser('==_==a==_==')), [['<mark id="mark::a"><em><mark id="mark::a">a</mark><a href="#mark::a"></a></em></mark>', '<a href="#mark::a"></a>'], '']);
|
|
44
44
|
});
|
|
45
45
|
|
|
46
46
|
});
|
|
@@ -19,7 +19,7 @@ export const mark: MarkParser = lazy(() => surround(
|
|
|
19
19
|
str('=='), false,
|
|
20
20
|
([, bs], rest, { id }) => {
|
|
21
21
|
const el = html('mark', defrag(bs));
|
|
22
|
-
define(el, { id: id
|
|
22
|
+
define(el, { id: identity(id, text(el), 'mark') });
|
|
23
23
|
return [[el, html('a', { href: el.id ? `#${el.id}` : undefined })], rest];
|
|
24
24
|
},
|
|
25
25
|
([as, bs], rest) => [unshift(as, bs), rest]));
|
|
@@ -32,7 +32,7 @@ describe('Unit: parser/inline', () => {
|
|
|
32
32
|
assert.deepStrictEqual(inspect(parser('++\na\n++\n~~\nb\n~~\nc')), [['<ins><br>a</ins>', '<br>', '<del><br>b</del>', '<br>', 'c'], '']);
|
|
33
33
|
assert.deepStrictEqual(inspect(parser('``a`')), [['``', 'a', '`'], '']);
|
|
34
34
|
assert.deepStrictEqual(inspect(parser('[@a]')), [['[', '<a class="account" href="/@a">@a</a>', ']'], '']);
|
|
35
|
-
assert.deepStrictEqual(inspect(parser('[#1][#2]')), [['<a class="index" href="#index
|
|
35
|
+
assert.deepStrictEqual(inspect(parser('[#1][#2]')), [['<a class="index" href="#index::1">1</a>', '<a class="index" href="#index::2">2</a>'], '']);
|
|
36
36
|
assert.deepStrictEqual(inspect(parser('[$1]')), [['[', '$', '1', ']'], '']);
|
|
37
37
|
assert.deepStrictEqual(inspect(parser('[$1-2]')), [['[', '$', '1-2', ']'], '']);
|
|
38
38
|
assert.deepStrictEqual(inspect(parser('[$-1][$-2]')), [['<a class="label" data-label="$-1">$-1</a>', '<a class="label" data-label="$-2">$-2</a>'], '']);
|
|
@@ -44,8 +44,8 @@ describe('Unit: parser/inline', () => {
|
|
|
44
44
|
assert.deepStrictEqual(inspect(parser('[[#-1]]{b}')), [['<sup class="reference"><span>#-1</span></sup>', '<a class="url" href="b">b</a>'], '']);
|
|
45
45
|
assert.deepStrictEqual(inspect(parser('[[#-1]](b)')), [['<sup class="reference"><span>#-1</span></sup>', '(', 'b', ')'], '']);
|
|
46
46
|
assert.deepStrictEqual(inspect(parser('[[#-1]a]{b}')), [['<a class="link" href="b">[#-1]a</a>'], '']);
|
|
47
|
-
assert.deepStrictEqual(inspect(parser('[[#-1]a](b)')), [['[', '<a class="index" href="#index
|
|
48
|
-
assert.deepStrictEqual(inspect(parser('[#a]{b}')), [['<a class="index" href="#index
|
|
47
|
+
assert.deepStrictEqual(inspect(parser('[[#-1]a](b)')), [['[', '<a class="index" href="#index::-1">-1</a>', 'a', ']', '(', 'b', ')'], '']);
|
|
48
|
+
assert.deepStrictEqual(inspect(parser('[#a]{b}')), [['<a class="index" href="#index::a">a</a>', '<a class="url" href="b">b</a>'], '']);
|
|
49
49
|
assert.deepStrictEqual(inspect(parser('[@a]{b}')), [['<a class="link" href="b">@a</a>'], '']);
|
|
50
50
|
assert.deepStrictEqual(inspect(parser('[http://host]{http://evil}')), [['<a class="invalid">http://host</a>'], '']);
|
|
51
51
|
assert.deepStrictEqual(inspect(parser('[http://host]{http://host}')), [['<a class="invalid">http://host</a>'], '']);
|
|
@@ -150,7 +150,7 @@ describe('Unit: parser/inline', () => {
|
|
|
150
150
|
assert.deepStrictEqual(inspect(parser('#a#')), [['#a#'], '']);
|
|
151
151
|
assert.deepStrictEqual(inspect(parser('#a#b')), [['#a#b'], '']);
|
|
152
152
|
assert.deepStrictEqual(inspect(parser('#a')), [['<a class="hashtag" href="/hashtags/a">#a</a>'], '']);
|
|
153
|
-
assert.deepStrictEqual(inspect(parser('#a\nb\n#c\n[#d]')), [['<a class="hashtag" href="/hashtags/a">#a</a>', '<br>', 'b', '<br>', '<a class="hashtag" href="/hashtags/c">#c</a>', '<br>', '<a class="index" href="#index
|
|
153
|
+
assert.deepStrictEqual(inspect(parser('#a\nb\n#c\n[#d]')), [['<a class="hashtag" href="/hashtags/a">#a</a>', '<br>', 'b', '<br>', '<a class="hashtag" href="/hashtags/c">#c</a>', '<br>', '<a class="index" href="#index::d">d</a>'], '']);
|
|
154
154
|
assert.deepStrictEqual(inspect(parser('##a')), [['##a'], '']);
|
|
155
155
|
assert.deepStrictEqual(inspect(parser('a#b')), [['a#b'], '']);
|
|
156
156
|
assert.deepStrictEqual(inspect(parser('0a#b')), [['0a#b'], '']);
|