securemark 0.236.0 → 0.237.2
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 +12 -0
- package/dist/securemark.js +184 -99
- package/karma.conf.js +1 -1
- package/markdown.d.ts +9 -10
- package/package-lock.json +81 -47
- package/package.json +1 -1
- package/src/parser/api/bind.ts +7 -3
- package/src/parser/api/parse.test.ts +2 -2
- package/src/parser/api/parse.ts +8 -11
- package/src/parser/block/blockquote.test.ts +1 -1
- package/src/parser/block/codeblock.test.ts +5 -2
- package/src/parser/block/codeblock.ts +43 -25
- package/src/parser/block/dlist.ts +1 -3
- package/src/parser/block/extension/aside.test.ts +1 -1
- package/src/parser/block/extension/aside.ts +1 -1
- package/src/parser/block/extension/example.test.ts +2 -2
- package/src/parser/block/extension/example.ts +1 -1
- package/src/parser/block/extension/fig.test.ts +22 -20
- package/src/parser/block/extension/figure.test.ts +33 -33
- package/src/parser/block/extension/figure.ts +26 -1
- package/src/parser/block/extension/message.ts +1 -1
- package/src/parser/block/extension/placeholder.ts +1 -1
- package/src/parser/block/extension/table.ts +1 -1
- package/src/parser/block/extension.ts +1 -1
- package/src/parser/block/heading.test.ts +1 -1
- package/src/parser/block/heading.ts +11 -7
- package/src/parser/block/mathblock.ts +1 -1
- package/src/parser/block/olist.test.ts +8 -0
- package/src/parser/block/olist.ts +6 -6
- package/src/parser/block/reply/cite.test.ts +4 -0
- package/src/parser/block/reply/cite.ts +1 -0
- package/src/parser/block/ulist.test.ts +8 -0
- package/src/parser/block/ulist.ts +6 -6
- package/src/parser/inline/comment.ts +1 -1
- package/src/parser/inline/extension/indexee.ts +8 -8
- package/src/parser/inline.ts +2 -0
- package/src/parser/processor/figure.test.ts +70 -46
- package/src/parser/processor/figure.ts +58 -21
- package/src/parser/processor/footnote.ts +1 -1
- package/src/util/quote.ts +1 -0
|
@@ -28,7 +28,7 @@ describe('Unit: parser/processor/figure', () => {
|
|
|
28
28
|
assert.deepStrictEqual(
|
|
29
29
|
[...target.children].map(el => el.outerHTML),
|
|
30
30
|
[
|
|
31
|
-
'<figure data-label="fig-a" data-group="fig" data-number="1" id="label:fig-a"><div><blockquote></blockquote></div><figcaption><span class="figindex">Fig. 1. </span></figcaption></figure>',
|
|
31
|
+
'<figure data-type="quote" data-label="fig-a" data-group="fig" data-number="1" id="label:fig-a"><div><blockquote></blockquote></div><figcaption><span class="figindex">Fig. 1. </span></figcaption></figure>',
|
|
32
32
|
'<p><a class="label" data-label="fig-a" href="#label:fig-a">Fig. 1</a></p>',
|
|
33
33
|
'<p><a class="label" data-label="fig-a" href="#label:fig-a">Fig. 1</a></p>',
|
|
34
34
|
]);
|
|
@@ -49,12 +49,12 @@ describe('Unit: parser/processor/figure', () => {
|
|
|
49
49
|
assert.deepStrictEqual(
|
|
50
50
|
[...target.children].map(el => el.outerHTML),
|
|
51
51
|
[
|
|
52
|
-
'<figure data-label="fig-a" data-group="fig" data-number="1" id="label:fig-a"><div><blockquote></blockquote></div><figcaption><span class="figindex">Fig. 1. </span></figcaption></figure>',
|
|
52
|
+
'<figure data-type="quote" data-label="fig-a" data-group="fig" data-number="1" id="label:fig-a"><div><blockquote></blockquote></div><figcaption><span class="figindex">Fig. 1. </span></figcaption></figure>',
|
|
53
53
|
'<h2 id="index:0">0</h2>',
|
|
54
|
-
'<figure data-label="fig-b" data-group="fig" data-number="2" id="label:fig-b"><div><blockquote></blockquote></div><figcaption><span class="figindex">Fig. 2. </span></figcaption></figure>',
|
|
55
|
-
'<figure data-label="table-a" data-group="table" data-number="1" id="label:table-a"><div><blockquote></blockquote></div><figcaption><span class="figindex">Table 1. </span></figcaption></figure>',
|
|
56
|
-
'<figure data-label="fig-b" data-group="fig" data-number="3" class="invalid" data-invalid-syntax="figure" data-invalid-type="argument" data-invalid-message="Duplicate label"><div><blockquote></blockquote></div><figcaption><span class="figindex">Fig. 3. </span></figcaption></figure>',
|
|
57
|
-
'<figure data-label="fig-c" data-group="fig" data-number="4" id="label:fig-c"><div><blockquote></blockquote></div><figcaption><span class="figindex">Fig. 4. </span></figcaption></figure>',
|
|
54
|
+
'<figure data-type="quote" data-label="fig-b" data-group="fig" data-number="2" id="label:fig-b"><div><blockquote></blockquote></div><figcaption><span class="figindex">Fig. 2. </span></figcaption></figure>',
|
|
55
|
+
'<figure data-type="quote" data-label="table-a" data-group="table" data-number="1" id="label:table-a"><div><blockquote></blockquote></div><figcaption><span class="figindex">Table 1. </span></figcaption></figure>',
|
|
56
|
+
'<figure data-type="quote" data-label="fig-b" data-group="fig" data-number="3" class="invalid" data-invalid-syntax="figure" data-invalid-type="argument" data-invalid-message="Duplicate label"><div><blockquote></blockquote></div><figcaption><span class="figindex">Fig. 3. </span></figcaption></figure>',
|
|
57
|
+
'<figure data-type="quote" data-label="fig-c" data-group="fig" data-number="4" id="label:fig-c"><div><blockquote></blockquote></div><figcaption><span class="figindex">Fig. 4. </span></figcaption></figure>',
|
|
58
58
|
]);
|
|
59
59
|
}
|
|
60
60
|
});
|
|
@@ -69,7 +69,7 @@ describe('Unit: parser/processor/figure', () => {
|
|
|
69
69
|
assert.deepStrictEqual(
|
|
70
70
|
[...target.children].map(el => el.outerHTML),
|
|
71
71
|
[
|
|
72
|
-
'<figure data-label="$-a" data-group="$" data-number="1" id="label:$-a"><div><div class="math" translate="no">$$\n$$</div></div><figcaption><span class="figindex">(1)</span></figcaption></figure>',
|
|
72
|
+
'<figure data-type="math" data-label="$-a" data-group="$" data-number="1" id="label:$-a"><div><div class="math" translate="no">$$\n$$</div></div><figcaption><span class="figindex">(1)</span></figcaption></figure>',
|
|
73
73
|
'<p><a class="label" data-label="$-a" href="#label:$-a">(1)</a></p>',
|
|
74
74
|
]);
|
|
75
75
|
}
|
|
@@ -91,14 +91,14 @@ describe('Unit: parser/processor/figure', () => {
|
|
|
91
91
|
assert.deepStrictEqual(
|
|
92
92
|
[...target.children].map(el => el.outerHTML),
|
|
93
93
|
[
|
|
94
|
-
'<figure data-label="fig-2" data-group="fig" data-number="2" id="label:fig-2"><div><blockquote></blockquote></div><figcaption><span class="figindex">Fig. 2. </span></figcaption></figure>',
|
|
95
|
-
'<figure data-label="fig-3.1" data-group="fig" data-number="3.1" id="label:fig-3.1"><div><blockquote></blockquote></div><figcaption><span class="figindex">Fig. 3.1. </span></figcaption></figure>',
|
|
96
|
-
'<figure data-label="$-4.1.1" data-group="$" data-number="4.1.1" id="label:$-4.1.1"><div><div class="math" translate="no">$$\n$$</div></div><figcaption><span class="figindex">(4.1.1)</span></figcaption></figure>',
|
|
97
|
-
'<figure data-label="$-a" data-group="$" data-number="1" id="label:$-a"><div><div class="math" translate="no">$$\n$$</div></div><figcaption><span class="figindex">(1)</span></figcaption></figure>',
|
|
98
|
-
'<figure data-label="fig-a" data-group="fig" data-number="1" id="label:fig-a"><div><blockquote></blockquote></div><figcaption><span class="figindex">Fig. 1. </span></figcaption></figure>',
|
|
94
|
+
'<figure data-type="quote" data-label="fig-2" data-group="fig" data-number="2" id="label:fig-2"><div><blockquote></blockquote></div><figcaption><span class="figindex">Fig. 2. </span></figcaption></figure>',
|
|
95
|
+
'<figure data-type="quote" data-label="fig-3.1" data-group="fig" data-number="3.1" id="label:fig-3.1"><div><blockquote></blockquote></div><figcaption><span class="figindex">Fig. 3.1. </span></figcaption></figure>',
|
|
96
|
+
'<figure data-type="math" data-label="$-4.1.1" data-group="$" data-number="4.1.1" id="label:$-4.1.1"><div><div class="math" translate="no">$$\n$$</div></div><figcaption><span class="figindex">(4.1.1)</span></figcaption></figure>',
|
|
97
|
+
'<figure data-type="math" data-label="$-a" data-group="$" data-number="1" id="label:$-a"><div><div class="math" translate="no">$$\n$$</div></div><figcaption><span class="figindex">(1)</span></figcaption></figure>',
|
|
98
|
+
'<figure data-type="quote" data-label="fig-a" data-group="fig" data-number="1" id="label:fig-a"><div><blockquote></blockquote></div><figcaption><span class="figindex">Fig. 1. </span></figcaption></figure>',
|
|
99
99
|
'<p><a class="label" data-label="fig-2" href="#label:fig-2">Fig. 2</a></p>',
|
|
100
100
|
'<p><a class="label" data-label="$-4.1.1" href="#label:$-4.1.1">(4.1.1)</a></p>',
|
|
101
|
-
'<p><a class="label disabled invalid" data-label="fig-1" data-invalid-syntax="label" data-invalid-type="reference" data-invalid-message="Missing the
|
|
101
|
+
'<p><a class="label disabled invalid" data-label="fig-1" data-invalid-syntax="label" data-invalid-type="reference" data-invalid-message="Missing the target figure">$fig-1</a></p>',
|
|
102
102
|
]);
|
|
103
103
|
}
|
|
104
104
|
});
|
|
@@ -115,10 +115,10 @@ describe('Unit: parser/processor/figure', () => {
|
|
|
115
115
|
assert.deepStrictEqual(
|
|
116
116
|
[...target.children].map(el => el.outerHTML),
|
|
117
117
|
[
|
|
118
|
-
'<blockquote><blockquote><section><figure data-label="fig-a" data-group="fig" data-number="1"><div><blockquote></blockquote></div><figcaption><span class="figindex">Fig. 1. </span></figcaption></figure><ol class="annotations"></ol><ol class="references"></ol></section></blockquote><section><figure data-label="fig-a" data-group="fig" data-number="1"><div><blockquote></blockquote></div><figcaption><span class="figindex">Fig. 1. </span></figcaption></figure><ol class="annotations"></ol><ol class="references"></ol></section></blockquote>',
|
|
119
|
-
'<aside class="example" data-type="markdown"><pre translate="no">~~~figure $fig-a\n> \n\n~~~\n\n$fig-a</pre><hr><section><figure data-label="fig-a" data-group="fig" data-number="1"><div><blockquote></blockquote></div><figcaption><span class="figindex">Fig. 1. </span></figcaption></figure><p><a class="label disabled" data-label="fig-a">Fig. 1</a></p><ol class="annotations"></ol><ol class="references"></ol></section></aside>',
|
|
120
|
-
'<figure data-label="fig-b" data-group="fig" data-number="1" id="label:fig-b"><div><blockquote></blockquote></div><figcaption><span class="figindex">Fig. 1. </span></figcaption></figure>',
|
|
121
|
-
'<figure data-label="fig-a" data-group="fig" data-number="2" id="label:fig-a"><div><blockquote></blockquote></div><figcaption><span class="figindex">Fig. 2. </span></figcaption></figure>',
|
|
118
|
+
'<blockquote><blockquote><section><figure data-type="quote" data-label="fig-a" data-group="fig" data-number="1"><div><blockquote></blockquote></div><figcaption><span class="figindex">Fig. 1. </span></figcaption></figure><ol class="annotations"></ol><ol class="references"></ol></section></blockquote><section><figure data-type="quote" data-label="fig-a" data-group="fig" data-number="1"><div><blockquote></blockquote></div><figcaption><span class="figindex">Fig. 1. </span></figcaption></figure><ol class="annotations"></ol><ol class="references"></ol></section></blockquote>',
|
|
119
|
+
'<aside class="example" data-type="markdown"><pre translate="no">~~~figure $fig-a\n> \n\n~~~\n\n$fig-a</pre><hr><section><figure data-type="quote" data-label="fig-a" data-group="fig" data-number="1"><div><blockquote></blockquote></div><figcaption><span class="figindex">Fig. 1. </span></figcaption></figure><p><a class="label disabled" data-label="fig-a">Fig. 1</a></p><ol class="annotations"></ol><ol class="references"></ol></section></aside>',
|
|
120
|
+
'<figure data-type="quote" data-label="fig-b" data-group="fig" data-number="1" id="label:fig-b"><div><blockquote></blockquote></div><figcaption><span class="figindex">Fig. 1. </span></figcaption></figure>',
|
|
121
|
+
'<figure data-type="quote" data-label="fig-a" data-group="fig" data-number="2" id="label:fig-a"><div><blockquote></blockquote></div><figcaption><span class="figindex">Fig. 2. </span></figcaption></figure>',
|
|
122
122
|
]);
|
|
123
123
|
}
|
|
124
124
|
});
|
|
@@ -134,6 +134,8 @@ describe('Unit: parser/processor/figure', () => {
|
|
|
134
134
|
'$fig-b\n> ',
|
|
135
135
|
'## 0',
|
|
136
136
|
'$-0.0.0',
|
|
137
|
+
'### 0',
|
|
138
|
+
'$-0.0',
|
|
137
139
|
'$fig-c\n> ',
|
|
138
140
|
'## 0',
|
|
139
141
|
'$-0.1.0',
|
|
@@ -167,66 +169,88 @@ describe('Unit: parser/processor/figure', () => {
|
|
|
167
169
|
'<h1 id="index:0">0</h1>',
|
|
168
170
|
'<figure data-label="$-0.0" data-group="$" hidden="" data-number="0.0"></figure>',
|
|
169
171
|
'<h2 id="index:0">0</h2>',
|
|
170
|
-
'<figure data-label="fig-1" data-group="fig" data-number="1" id="label:fig-1"><div><blockquote></blockquote></div><figcaption><span class="figindex">Fig. 1. </span></figcaption></figure>',
|
|
172
|
+
'<figure data-type="quote" data-label="fig-1" data-group="fig" data-number="1" id="label:fig-1"><div><blockquote></blockquote></div><figcaption><span class="figindex">Fig. 1. </span></figcaption></figure>',
|
|
171
173
|
'<h2 id="index:0">0</h2>',
|
|
172
174
|
'<blockquote><section><h2>0</h2><ol class="annotations"></ol><ol class="references"></ol></section></blockquote>',
|
|
173
|
-
'<figure data-label="fig-b" data-group="fig" data-number="2.1" id="label:fig-b"><div><blockquote></blockquote></div><figcaption><span class="figindex">Fig. 2.1. </span></figcaption></figure>',
|
|
175
|
+
'<figure data-type="quote" data-label="fig-b" data-group="fig" data-number="2.1" id="label:fig-b"><div><blockquote></blockquote></div><figcaption><span class="figindex">Fig. 2.1. </span></figcaption></figure>',
|
|
174
176
|
'<h2 id="index:0">0</h2>',
|
|
175
|
-
'<figure data-label="$-0.0.0" data-group="$"
|
|
176
|
-
'<
|
|
177
|
+
'<figure data-label="$-0.0.0" data-group="$" class="invalid" data-invalid-syntax="figure" data-invalid-type="argument" data-invalid-message="Base index must be $-x.0 format"></figure>',
|
|
178
|
+
'<h3 id="index:0">0</h3>',
|
|
179
|
+
'<figure data-label="$-0.0" data-group="$" hidden="" data-number="3.0"></figure>',
|
|
180
|
+
'<figure data-type="quote" data-label="fig-c" data-group="fig" data-number="3.1" id="label:fig-c"><div><blockquote></blockquote></div><figcaption><span class="figindex">Fig. 3.1. </span></figcaption></figure>',
|
|
177
181
|
'<h2 id="index:0">0</h2>',
|
|
178
|
-
'<figure data-label="$-0.1.0" data-group="$"
|
|
179
|
-
'<figure data-label="fig-d" data-group="fig" data-number="4.1" id="label:fig-d"><div><blockquote></blockquote></div><figcaption><span class="figindex">Fig. 4.1. </span></figcaption></figure>',
|
|
180
|
-
'<figure data-label="$-0.0" data-group="$"
|
|
181
|
-
'<figure data-label="$-0.1.0" data-group="$"
|
|
182
|
-
'<figure data-label="$-0.4.0" data-group="$"
|
|
183
|
-
'<figure data-label="$-0.1.0" data-group="$"
|
|
182
|
+
'<figure data-label="$-0.1.0" data-group="$" class="invalid" data-invalid-syntax="figure" data-invalid-type="argument" data-invalid-message="Base index must be $-x.0 format"></figure>',
|
|
183
|
+
'<figure data-type="quote" data-label="fig-d" data-group="fig" data-number="4.1" id="label:fig-d"><div><blockquote></blockquote></div><figcaption><span class="figindex">Fig. 4.1. </span></figcaption></figure>',
|
|
184
|
+
'<figure data-label="$-0.0" data-group="$" class="invalid" data-invalid-syntax="figure" data-invalid-type="position" data-invalid-message="Base index declarations must be after level 1 to 6 headings"></figure>',
|
|
185
|
+
'<figure data-label="$-0.1.0" data-group="$" class="invalid" data-invalid-syntax="figure" data-invalid-type="argument" data-invalid-message="Base index must be $-x.0 format"></figure>',
|
|
186
|
+
'<figure data-label="$-0.4.0" data-group="$" class="invalid" data-invalid-syntax="figure" data-invalid-type="argument" data-invalid-message="Base index must be $-x.0 format"></figure>',
|
|
187
|
+
'<figure data-label="$-0.1.0" data-group="$" class="invalid" data-invalid-syntax="figure" data-invalid-type="argument" data-invalid-message="Base index must be $-x.0 format"></figure>',
|
|
184
188
|
'<h2 id="index:0">0</h2>',
|
|
185
189
|
'<h2 id="index:0">0</h2>',
|
|
186
190
|
'<figure data-label="$-0.0" data-group="$" hidden="" data-number="6.0"></figure>',
|
|
187
|
-
'<figure data-label="fig-e" data-group="fig" data-number="6.1" id="label:fig-e"><div><blockquote></blockquote></div><figcaption><span class="figindex">Fig. 6.1. </span></figcaption></figure>',
|
|
191
|
+
'<figure data-type="quote" data-label="fig-e" data-group="fig" data-number="6.1" id="label:fig-e"><div><blockquote></blockquote></div><figcaption><span class="figindex">Fig. 6.1. </span></figcaption></figure>',
|
|
188
192
|
'<h2 id="index:0">0</h2>',
|
|
189
193
|
'<figure data-label="$-5.0" data-group="$" hidden="" data-number="5.0"></figure>',
|
|
190
|
-
'<figure data-label="fig-f" data-group="fig" data-number="5.1" id="label:fig-f"><div><blockquote></blockquote></div><figcaption><span class="figindex">Fig. 5.1. </span></figcaption></figure>',
|
|
191
|
-
'<figure data-label="$-0" data-group="$"
|
|
192
|
-
'<figure data-label="fig-g" data-group="fig" data-number="5.2" id="label:fig-g"><div><blockquote></blockquote></div><figcaption><span class="figindex">Fig. 5.2. </span></figcaption></figure>',
|
|
194
|
+
'<figure data-type="quote" data-label="fig-f" data-group="fig" data-number="5.1" id="label:fig-f"><div><blockquote></blockquote></div><figcaption><span class="figindex">Fig. 5.1. </span></figcaption></figure>',
|
|
195
|
+
'<figure data-label="$-0" data-group="$" class="invalid" data-invalid-syntax="figure" data-invalid-type="argument" data-invalid-message="Invalid base index"></figure>',
|
|
196
|
+
'<figure data-type="quote" data-label="fig-g" data-group="fig" data-number="5.2" id="label:fig-g"><div><blockquote></blockquote></div><figcaption><span class="figindex">Fig. 5.2. </span></figcaption></figure>',
|
|
193
197
|
'<h3 id="index:0">0</h3>',
|
|
194
|
-
'<figure data-label="$-0.0.0" data-group="$"
|
|
195
|
-
'<figure data-label="fig-h" data-group="fig" data-number="5.3" id="label:fig-h"><div><blockquote></blockquote></div><figcaption><span class="figindex">Fig. 5.3. </span></figcaption></figure>',
|
|
198
|
+
'<figure data-label="$-0.0.0" data-group="$" class="invalid" data-invalid-syntax="figure" data-invalid-type="argument" data-invalid-message="Base index must be $-x.0 format"></figure>',
|
|
199
|
+
'<figure data-type="quote" data-label="fig-h" data-group="fig" data-number="5.3" id="label:fig-h"><div><blockquote></blockquote></div><figcaption><span class="figindex">Fig. 5.3. </span></figcaption></figure>',
|
|
196
200
|
'<h3 id="index:0">0</h3>',
|
|
197
|
-
'<figure data-label="fig-i" data-group="fig" data-number="5.4" id="label:fig-i"><div><blockquote></blockquote></div><figcaption><span class="figindex">Fig. 5.4. </span></figcaption></figure>',
|
|
201
|
+
'<figure data-type="quote" data-label="fig-i" data-group="fig" data-number="5.4" id="label:fig-i"><div><blockquote></blockquote></div><figcaption><span class="figindex">Fig. 5.4. </span></figcaption></figure>',
|
|
198
202
|
'<h1 id="index:0">0</h1>',
|
|
199
|
-
'<figure data-label="fig-j" data-group="fig" data-number="6.1" id="label:fig-j"><div><blockquote></blockquote></div><figcaption><span class="figindex">Fig. 6.1. </span></figcaption></figure>',
|
|
203
|
+
'<figure data-type="quote" data-label="fig-j" data-group="fig" data-number="6.1" id="label:fig-j"><div><blockquote></blockquote></div><figcaption><span class="figindex">Fig. 6.1. </span></figcaption></figure>',
|
|
200
204
|
]);
|
|
201
205
|
}
|
|
202
206
|
});
|
|
203
207
|
|
|
204
|
-
it('
|
|
208
|
+
it('concat', () => {
|
|
205
209
|
const target = parse([
|
|
206
|
-
'# 0',
|
|
207
210
|
'$-0.0',
|
|
208
211
|
'## 0',
|
|
212
|
+
'$-0.0',
|
|
213
|
+
'$fig-a\n> ',
|
|
214
|
+
'$-0.0',
|
|
209
215
|
'## 0',
|
|
216
|
+
'$fig-b\n> ',
|
|
217
|
+
'$-0.0',
|
|
218
|
+
'### 0',
|
|
219
|
+
'$fig-c\n> ',
|
|
210
220
|
'$-1.0',
|
|
211
|
-
'$fig-a\n> ',
|
|
212
221
|
'## 0',
|
|
213
222
|
'$-0.0',
|
|
214
|
-
'$fig-
|
|
223
|
+
'$fig-d\n> ',
|
|
224
|
+
'### 0',
|
|
225
|
+
'$-0.0',
|
|
226
|
+
'## 0',
|
|
227
|
+
'$-9.0',
|
|
228
|
+
'$fig-e\n> ',
|
|
215
229
|
].join('\n\n'));
|
|
216
230
|
for (let i = 0; i < 3; ++i) {
|
|
217
231
|
[...figure(target)];
|
|
218
232
|
assert.deepStrictEqual(
|
|
219
233
|
[...target.children].map(el => normalize(el.outerHTML)),
|
|
220
234
|
[
|
|
221
|
-
'<
|
|
222
|
-
'<figure data-label="$-0.0" data-group="$" hidden="" data-number="0.0"></figure>',
|
|
235
|
+
'<figure data-label="$-0.0" data-group="$" class="invalid" data-invalid-syntax="figure" data-invalid-type="position" data-invalid-message="Base index declarations must be after level 1 to 6 headings"></figure>',
|
|
223
236
|
'<h2 id="index:0">0</h2>',
|
|
237
|
+
'<figure data-label="$-0.0" data-group="$" hidden="" data-number="0.0"></figure>',
|
|
238
|
+
'<figure data-type="quote" data-label="fig-a" data-group="fig" data-number="0.1" id="label:fig-a"><div><blockquote></blockquote></div><figcaption><span class="figindex">Fig. 0.1. </span></figcaption></figure>',
|
|
239
|
+
'<figure data-label="$-0.0" data-group="$" class="invalid" data-invalid-syntax="figure" data-invalid-type="position" data-invalid-message="Base index declarations must be after level 1 to 6 headings"></figure>',
|
|
224
240
|
'<h2 id="index:0">0</h2>',
|
|
225
|
-
'<figure data-
|
|
226
|
-
'<figure data-label="
|
|
241
|
+
'<figure data-type="quote" data-label="fig-b" data-group="fig" data-number="1.1" id="label:fig-b"><div><blockquote></blockquote></div><figcaption><span class="figindex">Fig. 1.1. </span></figcaption></figure>',
|
|
242
|
+
'<figure data-label="$-0.0" data-group="$" class="invalid" data-invalid-syntax="figure" data-invalid-type="position" data-invalid-message="Base index declarations must be after level 1 to 6 headings"></figure>',
|
|
243
|
+
'<h3 id="index:0">0</h3>',
|
|
244
|
+
'<figure data-type="quote" data-label="fig-c" data-group="fig" data-number="1.2" id="label:fig-c"><div><blockquote></blockquote></div><figcaption><span class="figindex">Fig. 1.2. </span></figcaption></figure>',
|
|
245
|
+
'<figure data-label="$-1.0" data-group="$" class="invalid" data-invalid-syntax="figure" data-invalid-type="position" data-invalid-message="Base index declarations must be after level 1 to 6 headings"></figure>',
|
|
227
246
|
'<h2 id="index:0">0</h2>',
|
|
228
247
|
'<figure data-label="$-0.0" data-group="$" hidden="" data-number="2.0"></figure>',
|
|
229
|
-
'<figure data-label="fig-
|
|
248
|
+
'<figure data-type="quote" data-label="fig-d" data-group="fig" data-number="2.1" id="label:fig-d"><div><blockquote></blockquote></div><figcaption><span class="figindex">Fig. 2.1. </span></figcaption></figure>',
|
|
249
|
+
'<h3 id="index:0">0</h3>',
|
|
250
|
+
'<figure data-label="$-0.0" data-group="$" hidden="" data-number="2.0"></figure>',
|
|
251
|
+
'<h2 id="index:0">0</h2>',
|
|
252
|
+
'<figure data-label="$-9.0" data-group="$" hidden="" data-number="9.0"></figure>',
|
|
253
|
+
'<figure data-type="quote" data-label="fig-e" data-group="fig" data-number="9.1" id="label:fig-e"><div><blockquote></blockquote></div><figcaption><span class="figindex">Fig. 9.1. </span></figcaption></figure>',
|
|
230
254
|
]);
|
|
231
255
|
}
|
|
232
256
|
});
|
|
@@ -242,7 +266,7 @@ describe('Unit: parser/processor/figure', () => {
|
|
|
242
266
|
assert.deepStrictEqual(
|
|
243
267
|
[...target.children].map(el => el.outerHTML),
|
|
244
268
|
[
|
|
245
|
-
'<figure data-label="fig-a" data-group="fig" data-number="1" id="label:fig-a"><div><blockquote></blockquote></div><figcaption><span class="figindex">Fig. 1. </span></figcaption></figure>',
|
|
269
|
+
'<figure data-type="quote" data-label="fig-a" data-group="fig" data-number="1" id="label:fig-a"><div><blockquote></blockquote></div><figcaption><span class="figindex">Fig. 1. </span></figcaption></figure>',
|
|
246
270
|
'<p><a class="label" data-label="fig-a" href="#label:fig-a">Fig. 1</a></p>',
|
|
247
271
|
'<p><a class="label" data-label="fig-a" href="#label:fig-a">Fig. 1</a></p>',
|
|
248
272
|
]);
|
|
@@ -259,7 +283,7 @@ describe('Unit: parser/processor/figure', () => {
|
|
|
259
283
|
assert.deepStrictEqual(
|
|
260
284
|
[...target.children].map(el => el.outerHTML),
|
|
261
285
|
[
|
|
262
|
-
'<figure data-label="fig-a" data-group="fig" data-number="1" id="label:0:fig-a"><div><blockquote></blockquote></div><figcaption><span class="figindex">Fig. 1. </span></figcaption></figure>',
|
|
286
|
+
'<figure data-type="quote" data-label="fig-a" data-group="fig" data-number="1" id="label:0:fig-a"><div><blockquote></blockquote></div><figcaption><span class="figindex">Fig. 1. </span></figcaption></figure>',
|
|
263
287
|
'<p><a class="label" data-label="fig-a" href="#label:0:fig-a">Fig. 1</a></p>',
|
|
264
288
|
]);
|
|
265
289
|
}
|
|
@@ -22,25 +22,62 @@ export function* figure(
|
|
|
22
22
|
let bases: readonly string[] = base.split('.');
|
|
23
23
|
let index: readonly string[] = bases;
|
|
24
24
|
// Bug: Firefox
|
|
25
|
-
//for (let defs = target.querySelectorAll(':scope > figure[data-label], :scope > h1, :scope > h2
|
|
25
|
+
//for (let defs = target.querySelectorAll(':scope > figure[data-label], :scope > h1, :scope > h2'), i = 0, len = defs.length; i < len; ++i) {
|
|
26
26
|
for (
|
|
27
|
-
let defs = target.querySelectorAll('figure[data-label], h1, h2
|
|
27
|
+
let defs = target.querySelectorAll('figure[data-label], h1, h2'),
|
|
28
28
|
i = 0, len = defs.length; i < len; ++i) {
|
|
29
29
|
yield;
|
|
30
30
|
const def = defs[i];
|
|
31
31
|
if (def.parentNode !== target) continue;
|
|
32
|
-
|
|
32
|
+
const { tagName, classList } = def;
|
|
33
|
+
if (bases.length === 1 && tagName[0] === 'H') continue;
|
|
33
34
|
assert(base === '0' || bases.length > 1);
|
|
34
|
-
const label =
|
|
35
|
+
const label = tagName === 'FIGURE'
|
|
35
36
|
? def.getAttribute('data-label')!
|
|
36
37
|
: `$-${increment(index, def as HTMLHeadingElement)}`;
|
|
37
38
|
if (label.endsWith('-')) continue;
|
|
38
|
-
if (label.endsWith('-0'))
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
39
|
+
if (label.endsWith('-0')) {
|
|
40
|
+
define(def, {
|
|
41
|
+
class: void classList.add('invalid'),
|
|
42
|
+
'data-invalid-syntax': 'figure',
|
|
43
|
+
'data-invalid-type': 'argument',
|
|
44
|
+
'data-invalid-message': 'Invalid base index',
|
|
45
|
+
hidden: null,
|
|
46
|
+
});
|
|
47
|
+
continue;
|
|
48
|
+
}
|
|
49
|
+
if (tagName === 'FIGURE' && label.endsWith('.0')) {
|
|
42
50
|
// $-x.x.0 is disabled.
|
|
43
|
-
if (label.lastIndexOf('.', label.length - 3)
|
|
51
|
+
if (label.lastIndexOf('.', label.length - 3) !== -1) {
|
|
52
|
+
define(def, {
|
|
53
|
+
class: void classList.add('invalid'),
|
|
54
|
+
'data-invalid-syntax': 'figure',
|
|
55
|
+
'data-invalid-type': 'argument',
|
|
56
|
+
'data-invalid-message': 'Base index must be $-x.0 format',
|
|
57
|
+
hidden: null,
|
|
58
|
+
});
|
|
59
|
+
continue;
|
|
60
|
+
}
|
|
61
|
+
// $-x.0 after h1-h6.
|
|
62
|
+
if (!/^H[1-6]$/.test(def.previousElementSibling?.tagName ?? '')) {
|
|
63
|
+
define(def, {
|
|
64
|
+
class: void classList.add('invalid'),
|
|
65
|
+
'data-invalid-syntax': 'figure',
|
|
66
|
+
'data-invalid-type': 'position',
|
|
67
|
+
'data-invalid-message': 'Base index declarations must be after level 1 to 6 headings',
|
|
68
|
+
hidden: null,
|
|
69
|
+
});
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
classList.contains('invalid') && define(def, {
|
|
74
|
+
class: void classList.remove('invalid'),
|
|
75
|
+
'data-invalid-syntax': null,
|
|
76
|
+
'data-invalid-type': null,
|
|
77
|
+
'data-invalid-message': null,
|
|
78
|
+
hidden: '',
|
|
79
|
+
});
|
|
80
|
+
}
|
|
44
81
|
}
|
|
45
82
|
const group = label.split('-', 1)[0];
|
|
46
83
|
assert(label && group);
|
|
@@ -53,27 +90,27 @@ export function* figure(
|
|
|
53
90
|
assert(def.matches('figure') || number.endsWith('.0'));
|
|
54
91
|
if (number.endsWith('.0')) {
|
|
55
92
|
assert(isFixed(label));
|
|
56
|
-
|
|
57
|
-
if (group !== '$' ||
|
|
93
|
+
assert(number.split('.').length <= 2);
|
|
94
|
+
if (group !== '$' || tagName === 'FIGURE' && def.firstChild) continue;
|
|
58
95
|
if (number.startsWith('0.')) {
|
|
59
96
|
assert(number.endsWith('.0'));
|
|
60
97
|
number = join(
|
|
61
98
|
index.slice(0)
|
|
62
|
-
.reduce((ns, _, i,
|
|
99
|
+
.reduce((ns, _, i, xs) => {
|
|
63
100
|
i === ns.length
|
|
64
|
-
?
|
|
65
|
-
: ns[i] = +ns[i] > +
|
|
101
|
+
? xs.length = i
|
|
102
|
+
: ns[i] = +ns[i] > +xs[i]
|
|
66
103
|
? ns[i]
|
|
67
104
|
: +ns[i] === 0
|
|
68
|
-
?
|
|
69
|
-
: `${+
|
|
105
|
+
? xs[i]
|
|
106
|
+
: `${+xs[i] + 1}`;
|
|
70
107
|
return ns;
|
|
71
108
|
}, number.split('.')),
|
|
72
109
|
'.');
|
|
73
110
|
}
|
|
74
111
|
base = number;
|
|
75
112
|
bases = index = base.split('.');
|
|
76
|
-
numbers.clear();
|
|
113
|
+
tagName !== 'FIGURE' && numbers.clear();
|
|
77
114
|
assert(def.tagName !== 'FIGURE' || !+def.setAttribute('data-number', number));
|
|
78
115
|
continue;
|
|
79
116
|
}
|
|
@@ -89,11 +126,11 @@ export function* figure(
|
|
|
89
126
|
def.querySelector(':scope > figcaption > .figindex')!,
|
|
90
127
|
group === '$' ? figindex : `${figindex}. `);
|
|
91
128
|
if (labels.has(label)) {
|
|
92
|
-
if (
|
|
129
|
+
if (classList.contains('invalid') &&
|
|
93
130
|
def.getAttribute('data-invalid-message') !== 'Duplicate label') continue;
|
|
94
131
|
define(def, {
|
|
95
132
|
id: null,
|
|
96
|
-
class: void
|
|
133
|
+
class: void classList.add('invalid'),
|
|
97
134
|
'data-invalid-syntax': 'figure',
|
|
98
135
|
'data-invalid-type': 'argument',
|
|
99
136
|
'data-invalid-message': 'Duplicate label',
|
|
@@ -103,7 +140,7 @@ export function* figure(
|
|
|
103
140
|
else {
|
|
104
141
|
labels.add(label);
|
|
105
142
|
define(def, {
|
|
106
|
-
class: void
|
|
143
|
+
class: void classList.remove('invalid'),
|
|
107
144
|
'data-invalid-syntax': null,
|
|
108
145
|
'data-invalid-type': null,
|
|
109
146
|
'data-invalid-message': null,
|
|
@@ -122,7 +159,7 @@ export function* figure(
|
|
|
122
159
|
class: `${ref.className} disabled invalid`,
|
|
123
160
|
'data-invalid-syntax': 'label',
|
|
124
161
|
'data-invalid-type': 'reference',
|
|
125
|
-
'data-invalid-message': 'Missing the
|
|
162
|
+
'data-invalid-message': 'Missing the target figure',
|
|
126
163
|
});
|
|
127
164
|
}
|
|
128
165
|
yield ref;
|
|
@@ -53,7 +53,7 @@ function build(
|
|
|
53
53
|
style ??= abbr ? 'abbr' : 'count';
|
|
54
54
|
if (style === 'count' ? abbr : !abbr) {
|
|
55
55
|
define(ref, {
|
|
56
|
-
class:
|
|
56
|
+
class: void ref.classList.add('invalid'),
|
|
57
57
|
'data-invalid-syntax': syntax,
|
|
58
58
|
'data-invalid-type': 'style',
|
|
59
59
|
'data-invalid-message': `${syntax[0].toUpperCase() + syntax.slice(1)} style must be consistent`,
|
package/src/util/quote.ts
CHANGED