securemark 0.236.0 → 0.237.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 +4 -0
- package/dist/securemark.js +83 -40
- package/karma.conf.js +1 -1
- package/markdown.d.ts +9 -10
- package/package-lock.json +72 -38
- 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/dlist.ts +1 -3
- package/src/parser/block/extension/aside.test.ts +1 -1
- package/src/parser/block/extension/example.test.ts +2 -2
- 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 +25 -0
- package/src/parser/block/extension.ts +1 -1
- package/src/parser/block/heading.ts +1 -3
- 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/extension/indexee.ts +8 -8
- package/src/parser/inline.ts +2 -0
- package/src/parser/processor/figure.test.ts +31 -31
- package/src/parser/processor/figure.ts +1 -1
|
@@ -118,7 +118,7 @@ describe('Unit: parser/api/parse', () => {
|
|
|
118
118
|
'<p><a href="https://source/hashtags/a" target="_blank" class="hashtag">#a</a></p>',
|
|
119
119
|
'<p><a href="https://domain/hashtags/a" target="_blank" class="hashtag">#domain/a</a></p>',
|
|
120
120
|
'<p><a class="index" href="#index:a">a</a></p>',
|
|
121
|
-
'<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>',
|
|
121
|
+
'<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>',
|
|
122
122
|
'<p><a class="label" data-label="$-a" href="#label:$-a">(1)</a></p>',
|
|
123
123
|
'<p><sup class="annotation" id="annotation:ref:1" title="a"><span hidden="">a</span><a href="#annotation:def:1">*1</a></sup></p>',
|
|
124
124
|
'<p><a href="https://source/x/a" target="_blank">a</a></p>',
|
|
@@ -201,7 +201,7 @@ describe('Unit: parser/api/parse', () => {
|
|
|
201
201
|
assert.deepStrictEqual(
|
|
202
202
|
[...parse('$-a\n$$\n$$\n\n(($-a[[b]][[c*d*]]))', { footnotes }).children].map(el => el.outerHTML),
|
|
203
203
|
[
|
|
204
|
-
'<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>',
|
|
204
|
+
'<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>',
|
|
205
205
|
'<p><sup class="annotation" id="annotation:ref:1" title="(1)[1][2]"><span hidden=""><a class="label" data-label="$-a" href="#label:$-a">(1)</a><sup class="reference" id="reference:ref:1" title="b"><span hidden="">b</span><a href="#reference:def:1">[1]</a></sup><sup class="reference" id="reference:ref:2" title="cd"><span hidden="">c<em>d</em></span><a href="#reference:def:2">[2]</a></sup></span><a href="#annotation:def:1">*1</a></sup></p>',
|
|
206
206
|
]);
|
|
207
207
|
assert.deepStrictEqual(
|
package/src/parser/api/parse.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { undefined, location } from 'spica/global';
|
|
2
|
-
import { ObjectAssign, ObjectCreate } from 'spica/alias';
|
|
3
2
|
import { ParserOptions } from '../../..';
|
|
4
3
|
import { MarkdownParser } from '../../../markdown';
|
|
5
4
|
import { eval } from '../../combinator/data/parser';
|
|
@@ -22,16 +21,14 @@ export function parse(source: string, opts: Options = {}, context?: MarkdownPars
|
|
|
22
21
|
const url = headers(source).find(field => field.toLowerCase().startsWith('url:'))?.slice(4).trim() ?? '';
|
|
23
22
|
source = !context ? normalize(source) : source;
|
|
24
23
|
assert(!context?.delimiters);
|
|
25
|
-
context =
|
|
26
|
-
? context
|
|
27
|
-
:
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
});
|
|
34
|
-
assert(context.caches === arguments[2]?.caches);
|
|
24
|
+
context = {
|
|
25
|
+
url: url ? new ReadonlyURL(url as ':') : context?.url,
|
|
26
|
+
host: opts.host ?? context?.host ?? new ReadonlyURL(location.pathname, location.origin),
|
|
27
|
+
caches: context?.caches,
|
|
28
|
+
footnotes: undefined,
|
|
29
|
+
test: undefined,
|
|
30
|
+
...opts,
|
|
31
|
+
};
|
|
35
32
|
if (context.host?.origin === 'null') throw new Error(`Invalid host: ${context.host.href}`);
|
|
36
33
|
const node = frag();
|
|
37
34
|
let index = 0;
|
|
@@ -95,7 +95,7 @@ describe('Unit: parser/block/blockquote', () => {
|
|
|
95
95
|
assert.deepStrictEqual(inspect(parser('!>\n> a')), [['<blockquote><section><p>a</p><ol class="annotations"></ol><ol class="references"></ol></section></blockquote>'], '']);
|
|
96
96
|
assert.deepStrictEqual(inspect(parser('!>> ## a\n> ## a')), [['<blockquote><blockquote><section><h2>a</h2><ol class="annotations"></ol><ol class="references"></ol></section></blockquote><section><h2>a</h2><ol class="annotations"></ol><ol class="references"></ol></section></blockquote>'], '']);
|
|
97
97
|
assert.deepStrictEqual(inspect(parser('!>> ~ a\n> ~ a')), [['<blockquote><blockquote><section><dl><dt>a</dt><dd></dd></dl><ol class="annotations"></ol><ol class="references"></ol></section></blockquote><section><dl><dt>a</dt><dd></dd></dl><ol class="annotations"></ol><ol class="references"></ol></section></blockquote>'], '']);
|
|
98
|
-
assert.deepStrictEqual(inspect(parser('!>> ~~~figure $fig-a\n>> > \n>>\n~~~\n> ~~~figure $fig-a\n> > \n>\n[#a]\n~~~')), [['<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><a class="index">a</a></figcaption></figure><ol class="annotations"></ol><ol class="references"></ol></section></blockquote>'], '']);
|
|
98
|
+
assert.deepStrictEqual(inspect(parser('!>> ~~~figure $fig-a\n>> > \n>>\n~~~\n> ~~~figure $fig-a\n> > \n>\n[#a]\n~~~')), [['<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><a class="index">a</a></figcaption></figure><ol class="annotations"></ol><ol class="references"></ol></section></blockquote>'], '']);
|
|
99
99
|
assert.deepStrictEqual(inspect(parser('!>> ((a))\n> ((a))')), [['<blockquote><blockquote><section><p><sup class="annotation disabled" title="a"><span hidden="">a</span><a>*1</a></sup></p><ol class="annotations"><li>a<sup><a>^1</a></sup></li></ol><ol class="references"></ol></section></blockquote><section><p><sup class="annotation disabled" title="a"><span hidden="">a</span><a>*1</a></sup></p><ol class="annotations"><li>a<sup><a>^1</a></sup></li></ol><ol class="references"></ol></section></blockquote>'], '']);
|
|
100
100
|
});
|
|
101
101
|
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import { DListParser } from '../block';
|
|
2
2
|
import { union, inits, some, block, line, validate, rewrite, context, creator, open, trim, lazy, fmap } from '../../combinator';
|
|
3
|
-
import { inline } from '../inline';
|
|
4
|
-
import { indexer } from '../inline/extension/indexer';
|
|
5
|
-
import { indexee } from '../inline/extension/indexee';
|
|
3
|
+
import { inline, indexee, indexer } from '../inline';
|
|
6
4
|
import { anyline } from '../source';
|
|
7
5
|
import { localize } from '../locale';
|
|
8
6
|
import { visualize } from '../util';
|
|
@@ -16,7 +16,7 @@ describe('Unit: parser/block/extension/aside', () => {
|
|
|
16
16
|
it('valid', () => {
|
|
17
17
|
assert.deepStrictEqual(inspect(parser('~~~aside\n# 0\n~~~')), [['<aside id="index:0" class="aside"><h1>0</h1><ol class="annotations"></ol><ol class="references"></ol></aside>'], '']);
|
|
18
18
|
assert.deepStrictEqual(inspect(parser('~~~aside\n## 0\n~~~')), [['<aside id="index:0" class="aside"><h2>0</h2><ol class="annotations"></ol><ol class="references"></ol></aside>'], '']);
|
|
19
|
-
assert.deepStrictEqual(inspect(parser('~~~aside\n# 0\n\n$-0.0\n\n## 1\n\n$fig-a\n> \n~~~')), [['<aside id="index:0" class="aside"><h1>0</h1><figure data-label="$-0.0" data-group="$" hidden="" data-number="0.0"></figure><h2>1</h2><figure data-label="fig-a" data-group="fig" data-number="1.1"><div><blockquote></blockquote></div><figcaption><span class="figindex">Fig. 1.1. </span></figcaption></figure><ol class="annotations"></ol><ol class="references"></ol></aside>'], '']);
|
|
19
|
+
assert.deepStrictEqual(inspect(parser('~~~aside\n# 0\n\n$-0.0\n\n## 1\n\n$fig-a\n> \n~~~')), [['<aside id="index:0" class="aside"><h1>0</h1><figure data-label="$-0.0" data-group="$" hidden="" data-number="0.0"></figure><h2>1</h2><figure data-type="quote" data-label="fig-a" data-group="fig" data-number="1.1"><div><blockquote></blockquote></div><figcaption><span class="figindex">Fig. 1.1. </span></figcaption></figure><ol class="annotations"></ol><ol class="references"></ol></aside>'], '']);
|
|
20
20
|
});
|
|
21
21
|
|
|
22
22
|
});
|
|
@@ -19,8 +19,8 @@ describe('Unit: parser/block/extension/example', () => {
|
|
|
19
19
|
assert.deepStrictEqual(inspect(parser('~~~example/markdown\n\n~~~')), [['<aside class="example" data-type="markdown"><pre translate="no"></pre><hr><section><ol class="annotations"></ol><ol class="references"></ol></section></aside>'], '']);
|
|
20
20
|
assert.deepStrictEqual(inspect(parser('~~~example/markdown\na\n~~~')), [['<aside class="example" data-type="markdown"><pre translate="no">a</pre><hr><section><p>a</p><ol class="annotations"></ol><ol class="references"></ol></section></aside>'], '']);
|
|
21
21
|
assert.deepStrictEqual(inspect(parser('~~~example/markdown\n*a\nb*\n~~~')), [['<aside class="example" data-type="markdown"><pre translate="no">*a\nb*</pre><hr><section><p><em>a<br>b</em></p><ol class="annotations"></ol><ol class="references"></ol></section></aside>'], '']);
|
|
22
|
-
assert.deepStrictEqual(inspect(parser('~~~example/markdown\n$fig-a\n!https://host\n~~~')), [['<aside class="example" data-type="markdown"><pre translate="no">$fig-a\n!https://host</pre><hr><section><figure data-label="fig-a" data-group="fig" data-number="1"><div><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt=""></a></div><figcaption><span class="figindex">Fig. 1. </span></figcaption></figure><ol class="annotations"></ol><ol class="references"></ol></section></aside>'], '']);
|
|
23
|
-
assert.deepStrictEqual(inspect(parser('~~~example/markdown\n[$fig-a]\n!https://host\n~~~')), [['<aside class="example" data-type="markdown"><pre translate="no">[$fig-a]\n!https://host</pre><hr><section><figure data-label="fig-a" data-group="fig" data-number="1"><div><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt=""></a></div><figcaption><span class="figindex">Fig. 1. </span></figcaption></figure><ol class="annotations"></ol><ol class="references"></ol></section></aside>'], '']);
|
|
22
|
+
assert.deepStrictEqual(inspect(parser('~~~example/markdown\n$fig-a\n!https://host\n~~~')), [['<aside class="example" data-type="markdown"><pre translate="no">$fig-a\n!https://host</pre><hr><section><figure data-type="media" data-label="fig-a" data-group="fig" data-number="1"><div><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt=""></a></div><figcaption><span class="figindex">Fig. 1. </span></figcaption></figure><ol class="annotations"></ol><ol class="references"></ol></section></aside>'], '']);
|
|
23
|
+
assert.deepStrictEqual(inspect(parser('~~~example/markdown\n[$fig-a]\n!https://host\n~~~')), [['<aside class="example" data-type="markdown"><pre translate="no">[$fig-a]\n!https://host</pre><hr><section><figure data-type="media" data-label="fig-a" data-group="fig" data-number="1"><div><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt=""></a></div><figcaption><span class="figindex">Fig. 1. </span></figcaption></figure><ol class="annotations"></ol><ol class="references"></ol></section></aside>'], '']);
|
|
24
24
|
assert.deepStrictEqual(inspect(parser('~~~example/markdown\n## a\n~~~')), [['<aside class="example" data-type="markdown"><pre translate="no">## a</pre><hr><section><h2>a</h2><ol class="annotations"></ol><ol class="references"></ol></section></aside>'], '']);
|
|
25
25
|
assert.deepStrictEqual(inspect(parser('~~~example/markdown\n~ a\n~~~')), [['<aside class="example" data-type="markdown"><pre translate="no">~ a</pre><hr><section><dl><dt>a</dt><dd></dd></dl><ol class="annotations"></ol><ol class="references"></ol></section></aside>'], '']);
|
|
26
26
|
assert.deepStrictEqual(inspect(parser('~~~example/markdown\n((a))[[b]]\n~~~')), [['<aside class="example" data-type="markdown"><pre translate="no">((a))[[b]]</pre><hr><section><p><sup class="annotation disabled" title="a"><span hidden="">a</span><a>*1</a></sup><sup class="reference disabled" title="b"><span hidden="">b</span><a>[1]</a></sup></p><ol class="annotations"><li>a<sup><a>^1</a></sup></li></ol><ol class="references"><li>b<sup><a>^1</a></sup></li></ol></section></aside>'], '']);
|
|
@@ -14,32 +14,34 @@ describe('Unit: parser/block/extension/fig', () => {
|
|
|
14
14
|
assert.deepStrictEqual(inspect(parser('[$group-name]\n !https://host')), undefined);
|
|
15
15
|
assert.deepStrictEqual(inspect(parser('[$group-name]\n\n!https://host')), undefined);
|
|
16
16
|
assert.deepStrictEqual(inspect(parser('[$group-name]a\nhttps://host')), undefined);
|
|
17
|
-
assert.deepStrictEqual(inspect(parser('[$group-name]a\n!https://host')), [['<figure data-label="group-name" data-group="group" class="invalid"><div><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt=""></a></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
17
|
+
assert.deepStrictEqual(inspect(parser('[$group-name]a\n!https://host')), [['<figure data-type="media" data-label="group-name" data-group="group" class="invalid"><div><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt=""></a></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
18
18
|
assert.deepStrictEqual(inspect(parser('[$group-name] a\nhttps://host')), undefined);
|
|
19
|
-
assert.deepStrictEqual(inspect(parser('[$group-name] a\n!https://host')), [['<figure data-label="group-name" data-group="group" class="invalid"><div><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt=""></a></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
19
|
+
assert.deepStrictEqual(inspect(parser('[$group-name] a\n!https://host')), [['<figure data-type="media" data-label="group-name" data-group="group" class="invalid"><div><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt=""></a></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
20
20
|
assert.deepStrictEqual(inspect(parser('$-a\n$-b')), undefined);
|
|
21
21
|
assert.deepStrictEqual(inspect(parser(' [$group-name]\n!https://host\n')), undefined);
|
|
22
22
|
});
|
|
23
23
|
|
|
24
24
|
it('valid', () => {
|
|
25
|
-
assert.deepStrictEqual(inspect(parser('[$group-name]\n!https://host')), [['<figure data-label="group-name" data-group="group"><div><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt=""></a></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
26
|
-
assert.deepStrictEqual(inspect(parser('[$group-name]\n!https://host\n')), [['<figure data-label="group-name" data-group="group"><div><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt=""></a></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
27
|
-
assert.deepStrictEqual(inspect(parser('[$group-name]\n|\n|-\n|')), [['<figure data-label="group-name" data-group="group"><div><table><thead><tr></tr></thead><tbody><tr></tr></tbody></table></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
28
|
-
assert.deepStrictEqual(inspect(parser('[$group-name]\n|\n|-\n|\n')), [['<figure data-label="group-name" data-group="group"><div><table><thead><tr></tr></thead><tbody><tr></tr></tbody></table></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
29
|
-
assert.deepStrictEqual(inspect(parser('[$group-name]\n```\n\n```')), [['<figure data-label="group-name" data-group="group"><div><pre class="text" translate="no"></pre></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
30
|
-
assert.deepStrictEqual(inspect(parser('[$group-name]\n```\n\n```\n')), [['<figure data-label="group-name" data-group="group"><div><pre class="text" translate="no"></pre></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
31
|
-
assert.deepStrictEqual(inspect(parser('[$group-name]\n```\n~~~\n```')), [['<figure data-label="group-name" data-group="group"><div><pre class="text" translate="no">~~~</pre></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
32
|
-
assert.deepStrictEqual(inspect(parser('[$group-name]\n$$\n\n$$')), [['<figure data-label="group-name" data-group="group"><div><div class="math" translate="no">$$\n\n$$</div></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
33
|
-
assert.deepStrictEqual(inspect(parser('[$group-name]\n$$\n\n$$\n')), [['<figure data-label="group-name" data-group="group"><div><div class="math" translate="no">$$\n\n$$</div></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
34
|
-
assert.deepStrictEqual(inspect(parser('[$group-name]\n~~~example/markdown\n~~~')), [['<figure data-label="group-name" data-group="group"><div><aside class="example" data-type="markdown"><pre translate="no"></pre><hr><section><ol class="annotations"></ol><ol class="references"></ol></section></aside></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
35
|
-
assert.deepStrictEqual(inspect(parser('[$group-name]\n~~~example/markdown\n~~~\n')), [['<figure data-label="group-name" data-group="group"><div><aside class="example" data-type="markdown"><pre translate="no"></pre><hr><section><ol class="annotations"></ol><ol class="references"></ol></section></aside></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
36
|
-
assert.deepStrictEqual(inspect(parser('[$group-name]\n
|
|
37
|
-
assert.deepStrictEqual(inspect(parser('[$group-name]\n
|
|
38
|
-
assert.deepStrictEqual(inspect(parser('[$group-name]\n
|
|
39
|
-
assert.deepStrictEqual(inspect(parser('[$group-name]\n
|
|
40
|
-
assert.deepStrictEqual(inspect(parser('[$group-name]\n
|
|
41
|
-
assert.deepStrictEqual(inspect(parser('[$group-name]\n
|
|
42
|
-
assert.deepStrictEqual(inspect(parser('$group-name\n!https://host')), [['<figure data-label="group-name" data-group="group"><div><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt=""></a></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
25
|
+
assert.deepStrictEqual(inspect(parser('[$group-name]\n!https://host')), [['<figure data-type="media" data-label="group-name" data-group="group"><div><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt=""></a></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
26
|
+
assert.deepStrictEqual(inspect(parser('[$group-name]\n!https://host\n')), [['<figure data-type="media" data-label="group-name" data-group="group"><div><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt=""></a></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
27
|
+
assert.deepStrictEqual(inspect(parser('[$group-name]\n|\n|-\n|')), [['<figure data-type="table" data-label="group-name" data-group="group"><div><table><thead><tr></tr></thead><tbody><tr></tr></tbody></table></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
28
|
+
assert.deepStrictEqual(inspect(parser('[$group-name]\n|\n|-\n|\n')), [['<figure data-type="table" data-label="group-name" data-group="group"><div><table><thead><tr></tr></thead><tbody><tr></tr></tbody></table></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
29
|
+
assert.deepStrictEqual(inspect(parser('[$group-name]\n```\n\n```')), [['<figure data-type="text" data-label="group-name" data-group="group"><div><pre class="text" translate="no"></pre></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
30
|
+
assert.deepStrictEqual(inspect(parser('[$group-name]\n```\n\n```\n')), [['<figure data-type="text" data-label="group-name" data-group="group"><div><pre class="text" translate="no"></pre></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
31
|
+
assert.deepStrictEqual(inspect(parser('[$group-name]\n```\n~~~\n```')), [['<figure data-type="text" data-label="group-name" data-group="group"><div><pre class="text" translate="no">~~~</pre></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
32
|
+
assert.deepStrictEqual(inspect(parser('[$group-name]\n$$\n\n$$')), [['<figure data-type="math" data-label="group-name" data-group="group"><div><div class="math" translate="no">$$\n\n$$</div></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
33
|
+
assert.deepStrictEqual(inspect(parser('[$group-name]\n$$\n\n$$\n')), [['<figure data-type="math" data-label="group-name" data-group="group"><div><div class="math" translate="no">$$\n\n$$</div></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
34
|
+
assert.deepStrictEqual(inspect(parser('[$group-name]\n~~~example/markdown\n~~~')), [['<figure data-type="example" data-label="group-name" data-group="group"><div><aside class="example" data-type="markdown"><pre translate="no"></pre><hr><section><ol class="annotations"></ol><ol class="references"></ol></section></aside></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
35
|
+
assert.deepStrictEqual(inspect(parser('[$group-name]\n~~~example/markdown\n~~~\n')), [['<figure data-type="example" data-label="group-name" data-group="group"><div><aside class="example" data-type="markdown"><pre translate="no"></pre><hr><section><ol class="annotations"></ol><ol class="references"></ol></section></aside></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
36
|
+
assert.deepStrictEqual(inspect(parser('[$group-name]\n~~~table\n~~~')), [['<figure data-type="table" data-label="group-name" data-group="group"><div><table></table></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
37
|
+
assert.deepStrictEqual(inspect(parser('[$group-name]\n~~~table\n~~~\n')), [['<figure data-type="table" data-label="group-name" data-group="group"><div><table></table></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
38
|
+
assert.deepStrictEqual(inspect(parser('[$group-name]\n> ')), [['<figure data-type="quote" data-label="group-name" data-group="group"><div><blockquote></blockquote></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
39
|
+
assert.deepStrictEqual(inspect(parser('[$group-name]\n> \n')), [['<figure data-type="quote" data-label="group-name" data-group="group"><div><blockquote></blockquote></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
40
|
+
assert.deepStrictEqual(inspect(parser('[$group-name]\n>\n~~~')), [['<figure data-type="quote" data-label="group-name" data-group="group"><div><blockquote><pre><br>~~~</pre></blockquote></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
41
|
+
assert.deepStrictEqual(inspect(parser('[$group-name]\n!> *a*')), [['<figure data-type="quote" data-label="group-name" data-group="group"><div><blockquote><section><p><em>a</em></p><ol class="annotations"></ol><ol class="references"></ol></section></blockquote></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
42
|
+
assert.deepStrictEqual(inspect(parser('[$group-name]\n![]{https://host}')), [['<figure data-type="media" data-label="group-name" data-group="group"><div><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt=""></a></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
43
|
+
assert.deepStrictEqual(inspect(parser('[$group-name]\n![]{https://host}\n')), [['<figure data-type="media" data-label="group-name" data-group="group"><div><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt=""></a></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
44
|
+
assert.deepStrictEqual(inspect(parser('$group-name\n!https://host')), [['<figure data-type="media" data-label="group-name" data-group="group"><div><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt=""></a></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
43
45
|
});
|
|
44
46
|
|
|
45
47
|
});
|
|
@@ -8,7 +8,7 @@ describe('Unit: parser/block/extension/figure', () => {
|
|
|
8
8
|
|
|
9
9
|
it('invalid', () => {
|
|
10
10
|
assert.deepStrictEqual(inspect(parser('~~~figure\n!https://host\n~~~')), undefined);
|
|
11
|
-
assert.deepStrictEqual(inspect(parser('~~~figure $group-name]\n!https://host\n~~~')), [['<figure data-label="group-name" data-group="group" class="invalid"><div><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt=""></a></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
11
|
+
assert.deepStrictEqual(inspect(parser('~~~figure $group-name]\n!https://host\n~~~')), [['<figure data-type="media" data-label="group-name" data-group="group" class="invalid"><div><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt=""></a></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
12
12
|
assert.deepStrictEqual(inspect(parser('~~~figure [$group-name\n!https://host\n~~~')), undefined);
|
|
13
13
|
assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\nhttps://host\n~~~')), undefined);
|
|
14
14
|
assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n!https://host\\\n~~~')), undefined);
|
|
@@ -21,9 +21,9 @@ describe('Unit: parser/block/extension/figure', () => {
|
|
|
21
21
|
assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n!https://host\n~~~~')), undefined);
|
|
22
22
|
assert.deepStrictEqual(inspect(parser('~~~~figure [$group-name]\n!https://host\n~~~')), undefined);
|
|
23
23
|
assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]a\nhttps://host\n~~~')), undefined);
|
|
24
|
-
assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]a\n!https://host\n~~~')), [['<figure data-label="group-name" data-group="group" class="invalid"><div><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt=""></a></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
24
|
+
assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]a\n!https://host\n~~~')), [['<figure data-type="media" data-label="group-name" data-group="group" class="invalid"><div><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt=""></a></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
25
25
|
assert.deepStrictEqual(inspect(parser('~~~figure [$group-name] a\nhttps://host\n~~~')), undefined);
|
|
26
|
-
assert.deepStrictEqual(inspect(parser('~~~figure [$group-name] a\n!https://host\n~~~')), [['<figure data-label="group-name" data-group="group" class="invalid"><div><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt=""></a></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
26
|
+
assert.deepStrictEqual(inspect(parser('~~~figure [$group-name] a\n!https://host\n~~~')), [['<figure data-type="media" data-label="group-name" data-group="group" class="invalid"><div><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt=""></a></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
27
27
|
assert.deepStrictEqual(inspect(parser('~~~ [$group-name]\n!https://host\n~~~')), undefined);
|
|
28
28
|
assert.deepStrictEqual(inspect(parser('~~~ $group-name\n!https://host\n~~~')), undefined);
|
|
29
29
|
assert.deepStrictEqual(inspect(parser(' ~~~figure [$group-name]\n!https://host\n~~~')), undefined);
|
|
@@ -31,36 +31,36 @@ describe('Unit: parser/block/extension/figure', () => {
|
|
|
31
31
|
});
|
|
32
32
|
|
|
33
33
|
it('valid', () => {
|
|
34
|
-
assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n!https://host\n~~~')), [['<figure data-label="group-name" data-group="group"><div><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt=""></a></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
35
|
-
assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n!https://host\n~~~\n')), [['<figure data-label="group-name" data-group="group"><div><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt=""></a></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
36
|
-
assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n!https://host\n\n~~~')), [['<figure data-label="group-name" data-group="group"><div><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt=""></a></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
37
|
-
assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n!https://host\n\n\n~~~')), [['<figure data-label="group-name" data-group="group"><div><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt=""></a></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
38
|
-
assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n!https://host\n\n\\\n~~~')), [['<figure data-label="group-name" data-group="group"><div><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt=""></a></div><figcaption><span class="figindex"></span>\\</figcaption></figure>'], '']);
|
|
39
|
-
assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n!https://host\n\n!https://caption\n~~~')), [['<figure data-label="group-name" data-group="group"><div><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt=""></a></div><figcaption><span class="figindex"></span>!<a href="https://caption" target="_blank">https://caption</a></figcaption></figure>'], '']);
|
|
40
|
-
assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n- a\n~~~')), [['<figure data-label="group-name" data-group="group"><div><ul><li>a</li></ul></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
41
|
-
assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n1. a\n~~~')), [['<figure data-label="group-name" data-group="group"><div><ol><li>a</li></ol></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
42
|
-
assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n|\n|-\n|\n~~~')), [['<figure data-label="group-name" data-group="group"><div><table><thead><tr></tr></thead><tbody><tr></tr></tbody></table></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
43
|
-
assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n```\n\n```\n~~~')), [['<figure data-label="group-name" data-group="group"><div><pre class="text" translate="no"></pre></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
44
|
-
assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n```\n~~~\n```\n\n~~~')), [['<figure data-label="group-name" data-group="group"><div><pre class="text" translate="no">~~~</pre></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
45
|
-
assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n```\n```\n\ncaption\n~~~')), [['<figure data-label="group-name" data-group="group"><div><pre class="text" translate="no"></pre></div><figcaption><span class="figindex"></span>caption</figcaption></figure>'], '']);
|
|
46
|
-
assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n$$\n\n$$\n~~~')), [['<figure data-label="group-name" data-group="group"><div><div class="math" translate="no">$$\n\n$$</div></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
47
|
-
assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n$$\n~~~\n$$\n~~~')), [['<figure data-label="group-name" data-group="group"><div><div class="math" translate="no">$$\n~~~\n$$</div></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
48
|
-
assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n$$\n\n$$\n\ncaption\n~~~')), [['<figure data-label="group-name" data-group="group"><div><div class="math" translate="no">$$\n\n$$</div></div><figcaption><span class="figindex"></span>caption</figcaption></figure>'], '']);
|
|
49
|
-
assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n~~~example/markdown\n~~~\n\ncaption\n~~~')), [['<figure data-label="group-name" data-group="group"><div><aside class="example" data-type="markdown"><pre translate="no"></pre><hr><section><ol class="annotations"></ol><ol class="references"></ol></section></aside></div><figcaption><span class="figindex"></span>caption</figcaption></figure>'], '']);
|
|
50
|
-
assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n~~~table\n~~~\n\ncaption\n~~~')), [['<figure data-label="group-name" data-group="group"><div><table></table></div><figcaption><span class="figindex"></span>caption</figcaption></figure>'], '']);
|
|
51
|
-
assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n> \n~~~\n\n~~~')), [['<figure data-label="group-name" data-group="group"><div><blockquote><pre><br>~~~</pre></blockquote></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
52
|
-
assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n> \n~~~\n\ncaption\n~~~')), [['<figure data-label="group-name" data-group="group"><div><blockquote><pre><br>~~~</pre></blockquote></div><figcaption><span class="figindex"></span>caption</figcaption></figure>'], '']);
|
|
53
|
-
assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n![]{https://host}\n~~~')), [['<figure data-label="group-name" data-group="group"><div><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt=""></a></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
54
|
-
assert.deepStrictEqual(inspect(parser('~~~~figure [$group-name]\n!https://host\n~~~~')), [['<figure data-label="group-name" data-group="group"><div><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt=""></a></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
55
|
-
assert.deepStrictEqual(inspect(parser('~~~figure $group-name\n!https://host\n~~~')), [['<figure data-label="group-name" data-group="group"><div><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt=""></a></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
56
|
-
assert.deepStrictEqual(inspect(parser('~~~[$group-name]\n!https://host\n~~~')), [['<figure data-label="group-name" data-group="group"><div><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt=""></a></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
57
|
-
assert.deepStrictEqual(inspect(parser('~~~$group-name\n!https://host\n~~~')), [['<figure data-label="group-name" data-group="group"><div><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt=""></a></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
58
|
-
assert.deepStrictEqual(inspect(parser('~~~figure [$group-0]\n> \n\n~~~')), [['<figure data-label="group-0" data-group="group" class="invalid"><div><blockquote></blockquote></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
59
|
-
assert.deepStrictEqual(inspect(parser('~~~figure [$group-0.0]\n> \n\n~~~')), [['<figure data-label="group-0.0" data-group="group" class="invalid"><div><blockquote></blockquote></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
60
|
-
assert.deepStrictEqual(inspect(parser('~~~figure [$-0]\n$$\n\n$$\n~~~')), [['<figure data-label="$-0" data-group="$" class="invalid"><div><div class="math" translate="no">$$\n\n$$</div></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
61
|
-
assert.deepStrictEqual(inspect(parser('~~~figure [$-0.0]\n$$\n\n$$\n~~~')), [['<figure data-label="$-0.0" data-group="$" class="invalid"><div><div class="math" translate="no">$$\n\n$$</div></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
62
|
-
assert.deepStrictEqual(inspect(parser('~~~figure [$-name]\n!https://host\n~~~')), [['<figure data-label="$-name" data-group="$" class="invalid"><div><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt=""></a></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
63
|
-
assert.deepStrictEqual(inspect(parser('~~~figure [$-name]\n$$\n\n$$\n\ncaption\n~~~')), [['<figure data-label="$-name" data-group="$" class="invalid"><div><div class="math" translate="no">$$\n\n$$</div></div><figcaption><span class="figindex"></span>caption</figcaption></figure>'], '']);
|
|
34
|
+
assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n!https://host\n~~~')), [['<figure data-type="media" data-label="group-name" data-group="group"><div><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt=""></a></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
35
|
+
assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n!https://host\n~~~\n')), [['<figure data-type="media" data-label="group-name" data-group="group"><div><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt=""></a></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
36
|
+
assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n!https://host\n\n~~~')), [['<figure data-type="media" data-label="group-name" data-group="group"><div><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt=""></a></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
37
|
+
assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n!https://host\n\n\n~~~')), [['<figure data-type="media" data-label="group-name" data-group="group"><div><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt=""></a></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
38
|
+
assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n!https://host\n\n\\\n~~~')), [['<figure data-type="media" data-label="group-name" data-group="group"><div><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt=""></a></div><figcaption><span class="figindex"></span>\\</figcaption></figure>'], '']);
|
|
39
|
+
assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n!https://host\n\n!https://caption\n~~~')), [['<figure data-type="media" data-label="group-name" data-group="group"><div><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt=""></a></div><figcaption><span class="figindex"></span>!<a href="https://caption" target="_blank">https://caption</a></figcaption></figure>'], '']);
|
|
40
|
+
assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n- a\n~~~')), [['<figure data-type="list" data-label="group-name" data-group="group"><div><ul><li>a</li></ul></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
41
|
+
assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n1. a\n~~~')), [['<figure data-type="list" data-label="group-name" data-group="group"><div><ol><li>a</li></ol></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
42
|
+
assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n|\n|-\n|\n~~~')), [['<figure data-type="table" data-label="group-name" data-group="group"><div><table><thead><tr></tr></thead><tbody><tr></tr></tbody></table></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
43
|
+
assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n```\n\n```\n~~~')), [['<figure data-type="text" data-label="group-name" data-group="group"><div><pre class="text" translate="no"></pre></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
44
|
+
assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n```\n~~~\n```\n\n~~~')), [['<figure data-type="text" data-label="group-name" data-group="group"><div><pre class="text" translate="no">~~~</pre></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
45
|
+
assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n```\n```\n\ncaption\n~~~')), [['<figure data-type="text" data-label="group-name" data-group="group"><div><pre class="text" translate="no"></pre></div><figcaption><span class="figindex"></span>caption</figcaption></figure>'], '']);
|
|
46
|
+
assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n$$\n\n$$\n~~~')), [['<figure data-type="math" data-label="group-name" data-group="group"><div><div class="math" translate="no">$$\n\n$$</div></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
47
|
+
assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n$$\n~~~\n$$\n~~~')), [['<figure data-type="math" data-label="group-name" data-group="group"><div><div class="math" translate="no">$$\n~~~\n$$</div></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
48
|
+
assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n$$\n\n$$\n\ncaption\n~~~')), [['<figure data-type="math" data-label="group-name" data-group="group"><div><div class="math" translate="no">$$\n\n$$</div></div><figcaption><span class="figindex"></span>caption</figcaption></figure>'], '']);
|
|
49
|
+
assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n~~~example/markdown\n~~~\n\ncaption\n~~~')), [['<figure data-type="example" data-label="group-name" data-group="group"><div><aside class="example" data-type="markdown"><pre translate="no"></pre><hr><section><ol class="annotations"></ol><ol class="references"></ol></section></aside></div><figcaption><span class="figindex"></span>caption</figcaption></figure>'], '']);
|
|
50
|
+
assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n~~~table\n~~~\n\ncaption\n~~~')), [['<figure data-type="table" data-label="group-name" data-group="group"><div><table></table></div><figcaption><span class="figindex"></span>caption</figcaption></figure>'], '']);
|
|
51
|
+
assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n> \n~~~\n\n~~~')), [['<figure data-type="quote" data-label="group-name" data-group="group"><div><blockquote><pre><br>~~~</pre></blockquote></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
52
|
+
assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n> \n~~~\n\ncaption\n~~~')), [['<figure data-type="quote" data-label="group-name" data-group="group"><div><blockquote><pre><br>~~~</pre></blockquote></div><figcaption><span class="figindex"></span>caption</figcaption></figure>'], '']);
|
|
53
|
+
assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n![]{https://host}\n~~~')), [['<figure data-type="media" data-label="group-name" data-group="group"><div><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt=""></a></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
54
|
+
assert.deepStrictEqual(inspect(parser('~~~~figure [$group-name]\n!https://host\n~~~~')), [['<figure data-type="media" data-label="group-name" data-group="group"><div><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt=""></a></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
55
|
+
assert.deepStrictEqual(inspect(parser('~~~figure $group-name\n!https://host\n~~~')), [['<figure data-type="media" data-label="group-name" data-group="group"><div><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt=""></a></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
56
|
+
assert.deepStrictEqual(inspect(parser('~~~[$group-name]\n!https://host\n~~~')), [['<figure data-type="media" data-label="group-name" data-group="group"><div><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt=""></a></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
57
|
+
assert.deepStrictEqual(inspect(parser('~~~$group-name\n!https://host\n~~~')), [['<figure data-type="media" data-label="group-name" data-group="group"><div><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt=""></a></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
58
|
+
assert.deepStrictEqual(inspect(parser('~~~figure [$group-0]\n> \n\n~~~')), [['<figure data-type="quote" data-label="group-0" data-group="group" class="invalid"><div><blockquote></blockquote></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
59
|
+
assert.deepStrictEqual(inspect(parser('~~~figure [$group-0.0]\n> \n\n~~~')), [['<figure data-type="quote" data-label="group-0.0" data-group="group" class="invalid"><div><blockquote></blockquote></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
60
|
+
assert.deepStrictEqual(inspect(parser('~~~figure [$-0]\n$$\n\n$$\n~~~')), [['<figure data-type="math" data-label="$-0" data-group="$" class="invalid"><div><div class="math" translate="no">$$\n\n$$</div></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
61
|
+
assert.deepStrictEqual(inspect(parser('~~~figure [$-0.0]\n$$\n\n$$\n~~~')), [['<figure data-type="math" data-label="$-0.0" data-group="$" class="invalid"><div><div class="math" translate="no">$$\n\n$$</div></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
62
|
+
assert.deepStrictEqual(inspect(parser('~~~figure [$-name]\n!https://host\n~~~')), [['<figure data-type="media" data-label="$-name" data-group="$" class="invalid"><div><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt=""></a></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
|
|
63
|
+
assert.deepStrictEqual(inspect(parser('~~~figure [$-name]\n$$\n\n$$\n\ncaption\n~~~')), [['<figure data-type="math" data-label="$-name" data-group="$" class="invalid"><div><div class="math" translate="no">$$\n\n$$</div></div><figcaption><span class="figindex"></span>caption</figcaption></figure>'], '']);
|
|
64
64
|
assert(parser('~~~figure [$group-name]\n```\n0' + '\n'.repeat(300) + '```\n~~~'));
|
|
65
65
|
assert(parser('~~~figure [$group-name]\n' + '>\n'.repeat(500) + '\n~~~'));
|
|
66
66
|
});
|
|
@@ -89,7 +89,32 @@ function attributes(label: string, param: string, content: HTMLElement, caption:
|
|
|
89
89
|
const invalidParam = param.trimStart() !== '';
|
|
90
90
|
const invalidContent = group === '$' && (!content.classList.contains('math') || caption.length > 0);
|
|
91
91
|
const invalid = invalidLabel || invalidParam || invalidContent || undefined;
|
|
92
|
+
let type: string = content.className.split(/\s/)[0];
|
|
93
|
+
switch (type || content.tagName) {
|
|
94
|
+
case 'UL':
|
|
95
|
+
case 'OL':
|
|
96
|
+
type = 'list';
|
|
97
|
+
break;
|
|
98
|
+
case 'TABLE':
|
|
99
|
+
type = 'table';
|
|
100
|
+
break;
|
|
101
|
+
case 'BLOCKQUOTE':
|
|
102
|
+
type = 'quote';
|
|
103
|
+
break;
|
|
104
|
+
case 'A':
|
|
105
|
+
type = 'media';
|
|
106
|
+
break;
|
|
107
|
+
case 'text':
|
|
108
|
+
case 'code':
|
|
109
|
+
case 'math':
|
|
110
|
+
case 'example':
|
|
111
|
+
case 'invalid':
|
|
112
|
+
break;
|
|
113
|
+
default:
|
|
114
|
+
assert(false);
|
|
115
|
+
}
|
|
92
116
|
return {
|
|
117
|
+
'data-type': type,
|
|
93
118
|
'data-label': label,
|
|
94
119
|
'data-group': group,
|
|
95
120
|
class: invalid && 'invalid',
|
|
@@ -9,7 +9,7 @@ import { aside } from './extension/aside';
|
|
|
9
9
|
import { example } from './extension/example';
|
|
10
10
|
import { placeholder, segment as seg_placeholder } from './extension/placeholder';
|
|
11
11
|
|
|
12
|
-
export const segment: ExtensionParser.SegmentParser = validate(['~~~', '[$', '$'], validate(/^~{3,}|^\[?\$[
|
|
12
|
+
export const segment: ExtensionParser.SegmentParser = validate(['~~~', '[$', '$'], validate(/^~{3,}|^\[?\$[A-Za-z-]\S+[^\S\n]*(?:$|\n)/, union([
|
|
13
13
|
seg_fig,
|
|
14
14
|
seg_figure,
|
|
15
15
|
seg_table,
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import { HeadingParser } from '../block';
|
|
2
2
|
import { union, some, block, line, validate, focus, rewrite, context, open, trim, fmap } from '../../combinator';
|
|
3
|
-
import { inline } from '../inline';
|
|
4
|
-
import { indexer } from '../inline/extension/indexer';
|
|
5
|
-
import { indexee } from '../inline/extension/indexee';
|
|
3
|
+
import { inline, indexee, indexer } from '../inline';
|
|
6
4
|
import { str } from '../source';
|
|
7
5
|
import { visualize } from '../util';
|
|
8
6
|
import { html, defrag } from 'typed-dom';
|
|
@@ -124,6 +124,14 @@ describe('Unit: parser/block/olist', () => {
|
|
|
124
124
|
assert.deepStrictEqual(inspect(parser('1. [X] 1')), [['<ol class="checklist"><li><span class="checkbox">☑</span>1</li></ol>'], '']);
|
|
125
125
|
});
|
|
126
126
|
|
|
127
|
+
it('indexer', () => {
|
|
128
|
+
assert.deepStrictEqual(inspect(parser('1. [#a]')), [['<ol><li><a class="index" href="#index:a">a</a></li></ol>'], '']);
|
|
129
|
+
assert.deepStrictEqual(inspect(parser('1. a [#b]')), [['<ol><li id="index:b">a<span class="indexer" data-index="b"></span></li></ol>'], '']);
|
|
130
|
+
assert.deepStrictEqual(inspect(parser('1. [ ] [#a]')), [['<ol class="checklist"><li><span class="checkbox">☐</span><a class="index" href="#index:a">a</a></li></ol>'], '']);
|
|
131
|
+
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>'], '']);
|
|
132
|
+
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>'], '']);
|
|
133
|
+
});
|
|
134
|
+
|
|
127
135
|
});
|
|
128
136
|
|
|
129
137
|
});
|
|
@@ -3,7 +3,7 @@ import { OListParser } from '../block';
|
|
|
3
3
|
import { union, inits, subsequence, some, block, line, validate, indent, focus, rewrite, context, creator, open, match, trim, trimStart, fallback, lazy, fmap } from '../../combinator';
|
|
4
4
|
import { checkbox, ulist_, fillFirstLine } from './ulist';
|
|
5
5
|
import { ilist_ } from './ilist';
|
|
6
|
-
import { inline } from '../inline';
|
|
6
|
+
import { inline, indexee, indexer } from '../inline';
|
|
7
7
|
import { contentline } from '../source';
|
|
8
8
|
import { html, define, defrag } from 'typed-dom';
|
|
9
9
|
import { memoize } from 'spica/memoize';
|
|
@@ -33,13 +33,13 @@ export const olist_: OListParser = lazy(() => block(union([
|
|
|
33
33
|
|
|
34
34
|
const list = (type: string, delim: string): OListParser.ListParser => fmap(
|
|
35
35
|
some(creator(union([
|
|
36
|
-
fmap(fallback(
|
|
36
|
+
indexee(fmap(fallback(
|
|
37
37
|
inits([
|
|
38
|
-
line(open(heads[delim], trim(subsequence([checkbox, trimStart(some(inline))])), true)),
|
|
38
|
+
line(open(heads[delim], trim(subsequence([checkbox, trimStart(some(union([indexer, inline])))])), true)),
|
|
39
39
|
indent(union([ulist_, olist_, ilist_])),
|
|
40
40
|
]),
|
|
41
|
-
|
|
42
|
-
(ns: [string, ...(HTMLElement | string)[]]) => [html('li', { 'data-marker': ns[0] }, defrag(fillFirstLine(shift(ns)[1])))]),
|
|
41
|
+
invalid),
|
|
42
|
+
(ns: [string, ...(HTMLElement | string)[]]) => [html('li', { 'data-marker': ns[0] }, defrag(fillFirstLine(shift(ns)[1])))]), true),
|
|
43
43
|
]))),
|
|
44
44
|
es => [format(html('ol', es), type, delim)]);
|
|
45
45
|
|
|
@@ -52,7 +52,7 @@ const heads = {
|
|
|
52
52
|
(source: string) => [[source.replace(/^\($/, '(1)').replace(/^\((\w+)$/, '($1)')], '']),
|
|
53
53
|
} as const;
|
|
54
54
|
|
|
55
|
-
const
|
|
55
|
+
const invalid = rewrite(contentline, source => [[
|
|
56
56
|
'',
|
|
57
57
|
html('span', {
|
|
58
58
|
class: 'invalid',
|
|
@@ -39,6 +39,10 @@ describe('Unit: parser/block/reply/cite', () => {
|
|
|
39
39
|
assert.deepStrictEqual(inspect(parser('>>>0\n>>')), [['<span class="cite">>><a href="?at=0" class="anchor" data-depth="2">>0</a></span>', '<br>'], '>>']);
|
|
40
40
|
assert.deepStrictEqual(inspect(parser('>>>0\n>>1')), [['<span class="cite">>><a href="?at=0" class="anchor" data-depth="2">>0</a></span>', '<br>', '<span class="cite">><a href="?at=1" class="anchor" data-depth="1">>1</a></span>', '<br>'], '']);
|
|
41
41
|
assert.deepStrictEqual(inspect(parser('>>.')), [['<span class="cite">><a class="anchor" data-depth="1">>.</a></span>', '<br>'], '']);
|
|
42
|
+
assert.deepStrictEqual(inspect(parser('>>#')), [['<span class="cite">><a class="anchor" data-depth="1">>#</a></span>', '<br>'], '']);
|
|
43
|
+
assert.deepStrictEqual(inspect(parser('>>#a')), [['<span class="cite">><a class="anchor" data-depth="1">>#a</a></span>', '<br>'], '']);
|
|
44
|
+
assert.deepStrictEqual(inspect(parser('>>#index:a')), [['<span class="cite">><a class="anchor" data-depth="1">>#index:a</a></span>', '<br>'], '']);
|
|
45
|
+
assert.deepStrictEqual(inspect(parser('>>#:~:text=a')), [['<span class="cite">><a class="anchor" data-depth="1">>#:~:text=a</a></span>', '<br>'], '']);
|
|
42
46
|
});
|
|
43
47
|
|
|
44
48
|
});
|
|
@@ -13,6 +13,7 @@ export const cite: ReplyParser.CiteParser = creator(line(fmap(validate(
|
|
|
13
13
|
// Subject page representation.
|
|
14
14
|
// リンクの実装は後で検討
|
|
15
15
|
focus(/^>>\.[^\S\n]*(?:$|\n)/, () => [[html('a', { class: 'anchor' }, '>>.')], '']),
|
|
16
|
+
focus(/^>>#\S*[^\S\n]*(?:$|\n)/, source => [[html('a', { class: 'anchor' }, source)], '']),
|
|
16
17
|
]),
|
|
17
18
|
]))),
|
|
18
19
|
([el, quotes = '']: [HTMLElement, string?]) => [
|
|
@@ -66,6 +66,14 @@ describe('Unit: parser/block/ulist', () => {
|
|
|
66
66
|
assert.deepStrictEqual(inspect(parser('- [X] 1')), [['<ul class="checklist"><li><span class="checkbox">☑</span>1</li></ul>'], '']);
|
|
67
67
|
});
|
|
68
68
|
|
|
69
|
+
it('indexer', () => {
|
|
70
|
+
assert.deepStrictEqual(inspect(parser('- [#a]')), [['<ul><li><a class="index" href="#index:a">a</a></li></ul>'], '']);
|
|
71
|
+
assert.deepStrictEqual(inspect(parser('- a [#b]')), [['<ul><li id="index:b">a<span class="indexer" data-index="b"></span></li></ul>'], '']);
|
|
72
|
+
assert.deepStrictEqual(inspect(parser('- [ ] [#a]')), [['<ul class="checklist"><li><span class="checkbox">☐</span><a class="index" href="#index:a">a</a></li></ul>'], '']);
|
|
73
|
+
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>'], '']);
|
|
74
|
+
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>'], '']);
|
|
75
|
+
});
|
|
76
|
+
|
|
69
77
|
});
|
|
70
78
|
|
|
71
79
|
});
|
|
@@ -2,7 +2,7 @@ import { UListParser } from '../block';
|
|
|
2
2
|
import { union, inits, subsequence, some, block, line, validate, indent, focus, rewrite, context, creator, open, trim, trimStart, fallback, lazy, fmap } from '../../combinator';
|
|
3
3
|
import { olist_ } from './olist';
|
|
4
4
|
import { ilist_ } from './ilist';
|
|
5
|
-
import { inline } from '../inline';
|
|
5
|
+
import { inline, indexer, indexee } from '../inline';
|
|
6
6
|
import { html, defrag } from 'typed-dom';
|
|
7
7
|
import { unshift } from 'spica/array';
|
|
8
8
|
import { contentline } from '../source';
|
|
@@ -15,13 +15,13 @@ export const ulist: UListParser = lazy(() => block(validate(
|
|
|
15
15
|
export const ulist_: UListParser = lazy(() => block(fmap(validate(
|
|
16
16
|
/^-(?=$|\s)/,
|
|
17
17
|
some(creator(union([
|
|
18
|
-
fmap(fallback(
|
|
18
|
+
indexee(fmap(fallback(
|
|
19
19
|
inits([
|
|
20
|
-
line(open(/^-(?:$|\s)/, trim(subsequence([checkbox, trimStart(some(inline))])), true)),
|
|
20
|
+
line(open(/^-(?:$|\s)/, trim(subsequence([checkbox, trimStart(some(union([indexer, inline])))])), true)),
|
|
21
21
|
indent(union([ulist_, olist_, ilist_])),
|
|
22
22
|
]),
|
|
23
|
-
|
|
24
|
-
ns => [html('li', defrag(fillFirstLine(ns)))]),
|
|
23
|
+
invalid),
|
|
24
|
+
ns => [html('li', defrag(fillFirstLine(ns)))]), true),
|
|
25
25
|
])))),
|
|
26
26
|
es => [format(html('ul', es))])));
|
|
27
27
|
|
|
@@ -31,7 +31,7 @@ export const checkbox = focus(
|
|
|
31
31
|
html('span', { class: 'checkbox' }, source[1].trimStart() ? '☑' : '☐'),
|
|
32
32
|
], '']);
|
|
33
33
|
|
|
34
|
-
const
|
|
34
|
+
const invalid = rewrite(contentline, source => [[
|
|
35
35
|
html('span', {
|
|
36
36
|
class: 'invalid',
|
|
37
37
|
'data-invalid-syntax': 'listitem',
|
|
@@ -4,9 +4,9 @@ import { Parser } from '../../../combinator/data/parser';
|
|
|
4
4
|
import { fmap } from '../../../combinator';
|
|
5
5
|
import { define } from 'typed-dom';
|
|
6
6
|
|
|
7
|
-
export function indexee<P extends Parser<unknown, MarkdownParser.Context>>(parser: P): P;
|
|
8
|
-
export function indexee(parser: Parser<HTMLElement, MarkdownParser.Context
|
|
9
|
-
return fmap(parser, ([el], _, { id }) => [define(el, { id: id !== '' && identity(text(el)) || undefined })]);
|
|
7
|
+
export function indexee<P extends Parser<unknown, MarkdownParser.Context>>(parser: P, optional?: boolean): P;
|
|
8
|
+
export function indexee(parser: Parser<HTMLElement, MarkdownParser.Context>, optional?: boolean): Parser<HTMLElement> {
|
|
9
|
+
return fmap(parser, ([el], _, { id }) => [define(el, { id: id !== '' && identity(text(el, optional)) || undefined })]);
|
|
10
10
|
}
|
|
11
11
|
|
|
12
12
|
export function identity(text: string): string {
|
|
@@ -18,13 +18,13 @@ assert(identity('0'.repeat(100)).slice(6) === '0'.repeat(100));
|
|
|
18
18
|
assert(identity('0'.repeat(101)).slice(6) === '0'.repeat(97) + '...');
|
|
19
19
|
assert(identity('0'.repeat(200)).slice(6) === '0'.repeat(97) + '...');
|
|
20
20
|
|
|
21
|
-
export function text(source: HTMLElement | DocumentFragment): string {
|
|
21
|
+
export function text(source: HTMLElement | DocumentFragment, optional = false): string {
|
|
22
22
|
assert(source instanceof DocumentFragment || !source.matches('.indexer'));
|
|
23
|
-
assert(source.querySelectorAll('.indexer').length <= 1);
|
|
24
|
-
|
|
25
|
-
assert(!source.querySelector('.annotation, br'));
|
|
26
|
-
const indexer = source.querySelector('.indexer');
|
|
23
|
+
assert(source.querySelectorAll(':scope > .indexer').length <= 1);
|
|
24
|
+
const indexer = source.querySelector(':scope > .indexer');
|
|
27
25
|
if (indexer) return indexer.getAttribute('data-index')!;
|
|
26
|
+
if (optional) return '';
|
|
27
|
+
assert(!source.querySelector('.annotation, br'));
|
|
28
28
|
const target = source.cloneNode(true) as typeof source;
|
|
29
29
|
for (
|
|
30
30
|
let es = target.querySelectorAll('code[data-src], .math[data-src], .comment, rt, rp, .reference'),
|
package/src/parser/inline.ts
CHANGED
|
@@ -75,5 +75,7 @@ export const inline: InlineParser = union([
|
|
|
75
75
|
text
|
|
76
76
|
]);
|
|
77
77
|
|
|
78
|
+
export { indexee } from './inline/extension/indexee';
|
|
79
|
+
export { indexer } from './inline/extension/indexer';
|
|
78
80
|
export { media } from './inline/media';
|
|
79
81
|
export { shortmedia } from './inline/shortmedia';
|