securemark 0.235.1 → 0.235.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.
@@ -14,32 +14,32 @@ 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 class="figcontent"><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-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 class="figcontent"><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-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 class="figcontent"><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 class="figcontent"><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 class="figcontent"><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 class="figcontent"><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 class="figcontent"><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 class="figcontent"><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 class="figcontent"><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 class="figcontent"><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 class="figcontent"><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 class="figcontent"><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 class="figcontent"><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> ')), [['<figure data-label="group-name" data-group="group"><div class="figcontent"><blockquote></blockquote></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
37
- assert.deepStrictEqual(inspect(parser('[$group-name]\n> \n')), [['<figure data-label="group-name" data-group="group"><div class="figcontent"><blockquote></blockquote></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
38
- assert.deepStrictEqual(inspect(parser('[$group-name]\n>\n~~~')), [['<figure data-label="group-name" data-group="group"><div class="figcontent"><blockquote><pre><br>~~~</pre></blockquote></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
39
- assert.deepStrictEqual(inspect(parser('[$group-name]\n!> *a*')), [['<figure data-label="group-name" data-group="group"><div class="figcontent"><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>'], '']);
40
- assert.deepStrictEqual(inspect(parser('[$group-name]\n![]{https://host}')), [['<figure data-label="group-name" data-group="group"><div class="figcontent"><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt=""></a></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
41
- assert.deepStrictEqual(inspect(parser('[$group-name]\n![]{https://host}\n')), [['<figure data-label="group-name" data-group="group"><div class="figcontent"><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt=""></a></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
42
- assert.deepStrictEqual(inspect(parser('$group-name\n!https://host')), [['<figure data-label="group-name" data-group="group"><div class="figcontent"><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-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> ')), [['<figure data-label="group-name" data-group="group"><div><blockquote></blockquote></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
37
+ assert.deepStrictEqual(inspect(parser('[$group-name]\n> \n')), [['<figure data-label="group-name" data-group="group"><div><blockquote></blockquote></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
38
+ assert.deepStrictEqual(inspect(parser('[$group-name]\n>\n~~~')), [['<figure data-label="group-name" data-group="group"><div><blockquote><pre><br>~~~</pre></blockquote></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
39
+ assert.deepStrictEqual(inspect(parser('[$group-name]\n!> *a*')), [['<figure 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>'], '']);
40
+ 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>'], '']);
41
+ 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>'], '']);
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>'], '']);
43
43
  });
44
44
 
45
45
  });
@@ -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 class="figcontent"><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-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 class="figcontent"><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-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 class="figcontent"><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-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,34 +31,34 @@ 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 class="figcontent"><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 class="figcontent"><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 class="figcontent"><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 class="figcontent"><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 class="figcontent"><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 class="figcontent"><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|\n|-\n|\n~~~')), [['<figure data-label="group-name" data-group="group"><div class="figcontent"><table><thead><tr></tr></thead><tbody><tr></tr></tbody></table></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
41
- assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n```\n\n```\n~~~')), [['<figure data-label="group-name" data-group="group"><div class="figcontent"><pre class="text" translate="no"></pre></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
42
- assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n```\n~~~\n```\n\n~~~')), [['<figure data-label="group-name" data-group="group"><div class="figcontent"><pre class="text" translate="no">~~~</pre></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
43
- assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n```\n```\n\ncaption\n~~~')), [['<figure data-label="group-name" data-group="group"><div class="figcontent"><pre class="text" translate="no"></pre></div><figcaption><span class="figindex"></span>caption</figcaption></figure>'], '']);
44
- assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n$$\n\n$$\n~~~')), [['<figure data-label="group-name" data-group="group"><div class="figcontent"><div class="math" translate="no">$$\n\n$$</div></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
45
- assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n$$\n~~~\n$$\n~~~')), [['<figure data-label="group-name" data-group="group"><div class="figcontent"><div class="math" translate="no">$$\n~~~\n$$</div></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
46
- assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n$$\n\n$$\n\ncaption\n~~~')), [['<figure data-label="group-name" data-group="group"><div class="figcontent"><div class="math" translate="no">$$\n\n$$</div></div><figcaption><span class="figindex"></span>caption</figcaption></figure>'], '']);
47
- assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n~~~example/markdown\n~~~\n\ncaption\n~~~')), [['<figure data-label="group-name" data-group="group"><div class="figcontent"><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>'], '']);
48
- assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n~~~table\n~~~\n\ncaption\n~~~')), [['<figure data-label="group-name" data-group="group"><div class="figcontent"><table></table></div><figcaption><span class="figindex"></span>caption</figcaption></figure>'], '']);
49
- assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n> \n~~~\n\n~~~')), [['<figure data-label="group-name" data-group="group"><div class="figcontent"><blockquote><pre><br>~~~</pre></blockquote></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
50
- assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n> \n~~~\n\ncaption\n~~~')), [['<figure data-label="group-name" data-group="group"><div class="figcontent"><blockquote><pre><br>~~~</pre></blockquote></div><figcaption><span class="figindex"></span>caption</figcaption></figure>'], '']);
51
- assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n![]{https://host}\n~~~')), [['<figure data-label="group-name" data-group="group"><div class="figcontent"><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt=""></a></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
52
- assert.deepStrictEqual(inspect(parser('~~~~figure [$group-name]\n!https://host\n~~~~')), [['<figure data-label="group-name" data-group="group"><div class="figcontent"><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt=""></a></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
53
- assert.deepStrictEqual(inspect(parser('~~~figure $group-name\n!https://host\n~~~')), [['<figure data-label="group-name" data-group="group"><div class="figcontent"><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('~~~[$group-name]\n!https://host\n~~~')), [['<figure data-label="group-name" data-group="group"><div class="figcontent"><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('~~~$group-name\n!https://host\n~~~')), [['<figure data-label="group-name" data-group="group"><div class="figcontent"><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('~~~figure [$group-0]\n> \n\n~~~')), [['<figure data-label="group-0" data-group="group" class="invalid"><div class="figcontent"><blockquote></blockquote></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
57
- assert.deepStrictEqual(inspect(parser('~~~figure [$group-0.0]\n> \n\n~~~')), [['<figure data-label="group-0.0" data-group="group" class="invalid"><div class="figcontent"><blockquote></blockquote></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
58
- assert.deepStrictEqual(inspect(parser('~~~figure [$-0]\n$$\n\n$$\n~~~')), [['<figure data-label="$-0" data-group="$" class="invalid"><div class="figcontent"><div class="math" translate="no">$$\n\n$$</div></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
59
- assert.deepStrictEqual(inspect(parser('~~~figure [$-0.0]\n$$\n\n$$\n~~~')), [['<figure data-label="$-0.0" data-group="$" class="invalid"><div class="figcontent"><div class="math" translate="no">$$\n\n$$</div></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
60
- assert.deepStrictEqual(inspect(parser('~~~figure [$-name]\n!https://host\n~~~')), [['<figure data-label="$-name" data-group="$" class="invalid"><div class="figcontent"><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt=""></a></div><figcaption><span class="figindex"></span></figcaption></figure>'], '']);
61
- assert.deepStrictEqual(inspect(parser('~~~figure [$-name]\n$$\n\n$$\n\ncaption\n~~~')), [['<figure data-label="$-name" data-group="$" class="invalid"><div class="figcontent"><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-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|\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>'], '']);
41
+ 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>'], '']);
42
+ 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>'], '']);
43
+ 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>'], '']);
44
+ 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>'], '']);
45
+ 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>'], '']);
46
+ 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>'], '']);
47
+ 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>'], '']);
48
+ 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>'], '']);
49
+ 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>'], '']);
50
+ 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>'], '']);
51
+ 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>'], '']);
52
+ 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>'], '']);
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('~~~[$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('~~~$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('~~~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>'], '']);
57
+ 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>'], '']);
58
+ 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>'], '']);
59
+ 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>'], '']);
60
+ 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>'], '']);
61
+ 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>'], '']);
62
62
  assert(parser('~~~figure [$group-name]\n```\n0' + '\n'.repeat(300) + '```\n~~~'));
63
63
  assert(parser('~~~figure [$group-name]\n' + '>\n'.repeat(500) + '\n~~~'));
64
64
  });
@@ -72,7 +72,7 @@ export const figure: FigureParser = block(rewrite(segment, fmap(
72
72
  html('figure',
73
73
  attributes(label.getAttribute('data-label')!, param, content, caption),
74
74
  [
75
- html('div', { class: 'figcontent' }, [content]),
75
+ html('div', [content]),
76
76
  html('figcaption', unshift(
77
77
  [html('span', { class: 'figindex' })],
78
78
  defrag(caption))),
@@ -2,7 +2,7 @@ import { undefined } from 'spica/global';
2
2
  import { AnnotationParser } from '../inline';
3
3
  import { union, some, validate, guard, context, creator, surround, lazy, fmap } from '../../combinator';
4
4
  import { inline } from '../inline';
5
- import { startLoose, trimNode } from '../util';
5
+ import { startLoose, trimSpaceStart, trimNodeEnd } from '../util';
6
6
  import { html, defrag } from 'typed-dom';
7
7
 
8
8
  export const annotation: AnnotationParser = lazy(() => creator(validate('((', '))', '\n', fmap(surround(
@@ -20,6 +20,6 @@ export const annotation: AnnotationParser = lazy(() => creator(validate('((', ')
20
20
  //link: true,
21
21
  //autolink: true,
22
22
  }}, state: undefined },
23
- union([some(inline, ')', /^\\?\n/)])), '))')),
23
+ trimSpaceStart(union([some(inline, ')', /^\\?\n/)]))))),
24
24
  '))'),
25
- ns => [html('sup', { class: 'annotation' }, trimNode(defrag(ns)))]))));
25
+ ns => [html('sup', { class: 'annotation' }, trimNodeEnd(defrag(ns)))]))));
@@ -12,17 +12,17 @@ describe('Unit: parser/inline/bracket', () => {
12
12
  assert.deepStrictEqual(inspect(parser('(a')), [['(', 'a'], '']);
13
13
  assert.deepStrictEqual(inspect(parser('(\\a)')), [['<span class="paren">(a)</span>'], '']);
14
14
  assert.deepStrictEqual(inspect(parser(')')), undefined);
15
- assert.deepStrictEqual(inspect(parser('(0)')), [['(0)'], '']);
16
- assert.deepStrictEqual(inspect(parser('(1)')), [['(1)'], '']);
17
- assert.deepStrictEqual(inspect(parser('(10)')), [['(10)'], '']);
18
- assert.deepStrictEqual(inspect(parser('(2000)')), [['(2000)'], '']);
15
+ assert.deepStrictEqual(inspect(parser('(0)')), [['(', '0', ')'], '']);
16
+ assert.deepStrictEqual(inspect(parser('(1)')), [['(', '1', ')'], '']);
17
+ assert.deepStrictEqual(inspect(parser('(10)')), [['(', '10', ')'], '']);
18
+ assert.deepStrictEqual(inspect(parser('(2000)')), [['(', '2000', ')'], '']);
19
19
  assert.deepStrictEqual(inspect(parser('(0-1)')), [['<span class="paren">(0-1)</span>'], '']);
20
- assert.deepStrictEqual(inspect(parser('(0)-1')), [['(0)'], '-1']);
21
- assert.deepStrictEqual(inspect(parser('(0.1)')), [['(0.1)'], '']);
22
- assert.deepStrictEqual(inspect(parser('(0.1.2)')), [['(0.1.2)'], '']);
23
- assert.deepStrictEqual(inspect(parser('(a)')), [['(a)'], '']);
24
- assert.deepStrictEqual(inspect(parser('(A)')), [['(A)'], '']);
25
- assert.deepStrictEqual(inspect(parser('(0)')), [['(0)'], '']);
20
+ assert.deepStrictEqual(inspect(parser('(0)-1')), [['(', '0', ')'], '-1']);
21
+ assert.deepStrictEqual(inspect(parser('(0.1)')), [['(', '0.1', ')'], '']);
22
+ assert.deepStrictEqual(inspect(parser('(0.1.2)')), [['(', '0.1.2', ')'], '']);
23
+ assert.deepStrictEqual(inspect(parser('(a)')), [['(', 'a', ')'], '']);
24
+ assert.deepStrictEqual(inspect(parser('(A)')), [['(', 'A', ')'], '']);
25
+ assert.deepStrictEqual(inspect(parser('(0.1)(A)')), [['', '0.1', ')', '(', 'A', ')'], '']);
26
26
  });
27
27
 
28
28
  it('[', () => {
@@ -7,16 +7,13 @@ import { html, defrag } from 'typed-dom';
7
7
  import { unshift, push } from 'spica/array';
8
8
 
9
9
  const index = /^(?:[0-9]+(?:\.[0-9]+)*|[A-Za-z])/;
10
- const indexFW = new RegExp(index.source.replace(/[019AZaz](?!,)/g, c => String.fromCharCode(c.charCodeAt(0) + 0xFEE0)));
11
10
 
12
11
  export const bracket: BracketParser = lazy(() => creator(union([
13
- surround(str('('), str(index), str(')'), false,
14
- ([as, bs = [], cs], rest) => [defrag(push(unshift(as, bs), cs)), rest]),
15
- surround(str('('), str(indexFW), str(')'), false,
16
- ([as, bs = [], cs], rest) => [defrag(push(unshift(as, bs), cs)), rest]),
12
+ surround(str('('), str(index), str(')')),
17
13
  surround(str('('), some(inline, ')'), str(')'), true,
18
14
  ([as, bs = [], cs], rest) => [[html('span', { class: 'paren' }, defrag(push(unshift(as, bs), cs)))], rest],
19
15
  ([as, bs = []], rest) => [unshift(as, bs), rest]),
16
+ surround(str('('), str(new RegExp(index.source.replace(/[09AZaz.]/g, c => String.fromCharCode(c.charCodeAt(0) + 0xFEE0)))), str(')')),
20
17
  surround(str('('), some(inline, ')'), str(')'), true,
21
18
  ([as, bs = [], cs], rest) => [[html('span', { class: 'paren' }, defrag(push(unshift(as, bs), cs)))], rest],
22
19
  ([as, bs = []], rest) => [unshift(as, bs), rest]),
@@ -18,7 +18,6 @@ describe('Unit: parser/inline/deletion', () => {
18
18
  it('basic', () => {
19
19
  assert.deepStrictEqual(inspect(parser('~~a~~')), [['<del>a</del>'], '']);
20
20
  assert.deepStrictEqual(inspect(parser('~~a~b~~')), [['<del>a~b</del>'], '']);
21
- assert.deepStrictEqual(inspect(parser('~~a ~~')), [['<del>a </del>'], '']);
22
21
  assert.deepStrictEqual(inspect(parser('~~ ~~')), [['<del> </del>'], '']);
23
22
  assert.deepStrictEqual(inspect(parser('~~ a~~')), [['<del> a</del>'], '']);
24
23
  assert.deepStrictEqual(inspect(parser('~~ a ~~')), [['<del> a </del>'], '']);
@@ -26,7 +25,11 @@ describe('Unit: parser/inline/deletion', () => {
26
25
  assert.deepStrictEqual(inspect(parser('~~\na~~')), [['<del><br>a</del>'], '']);
27
26
  assert.deepStrictEqual(inspect(parser('~~\\\na~~')), [['<del><span class="linebreak"> </span>a</del>'], '']);
28
27
  assert.deepStrictEqual(inspect(parser('~~<wbr>a~~')), [['<del><wbr>a</del>'], '']);
28
+ assert.deepStrictEqual(inspect(parser('~~a ~~')), [['<del>a </del>'], '']);
29
+ assert.deepStrictEqual(inspect(parser('~~a \n ~~')), [['<del>a </del>'], '']);
29
30
  assert.deepStrictEqual(inspect(parser('~~a\n~~')), [['<del>a</del>'], '']);
31
+ assert.deepStrictEqual(inspect(parser('~~a\n ~~')), [['<del>a </del>'], '']);
32
+ assert.deepStrictEqual(inspect(parser('~~a\n<wbr>~~')), [['<del>a<wbr></del>'], '']);
30
33
  assert.deepStrictEqual(inspect(parser('~~a\nb~~')), [['<del>a<br>b</del>'], '']);
31
34
  assert.deepStrictEqual(inspect(parser('~~a\\\nb~~')), [['<del>a<span class="linebreak"> </span>b</del>'], '']);
32
35
  assert.deepStrictEqual(inspect(parser('~~\\~~~')), [['<del>~</del>'], '']);
@@ -1,14 +1,17 @@
1
1
  import { DeletionParser } from '../inline';
2
- import { union, some, creator, surround, lazy } from '../../combinator';
2
+ import { union, some, creator, surround, open, lazy } from '../../combinator';
3
3
  import { inline } from '../inline';
4
4
  import { str } from '../source';
5
- import { trimNodeEndBR } from '../util';
5
+ import { blank } from '../util';
6
6
  import { html, defrag } from 'typed-dom';
7
7
  import { unshift } from 'spica/array';
8
8
 
9
9
  export const deletion: DeletionParser = lazy(() => creator(surround(
10
10
  str('~~'),
11
- union([some(inline, '~~')]),
11
+ some(union([
12
+ some(inline, blank(/\n?/, /~~/)),
13
+ open(/^\n?/, some(inline, '~'), true),
14
+ ])),
12
15
  str('~~'), false,
13
- ([, bs], rest) => [[html('del', defrag(trimNodeEndBR(bs)))], rest],
16
+ ([, bs], rest) => [[html('del', defrag(bs))], rest],
14
17
  ([as, bs], rest) => [unshift(as, bs), rest])));
@@ -3,7 +3,7 @@ import { union, some, creator, surround, open, lazy } from '../../combinator';
3
3
  import { inline } from '../inline';
4
4
  import { strong } from './strong';
5
5
  import { str } from '../source';
6
- import { startTight, delimiter } from '../util';
6
+ import { startTight, blank } from '../util';
7
7
  import { html, defrag } from 'typed-dom';
8
8
  import { unshift } from 'spica/array';
9
9
 
@@ -11,7 +11,7 @@ export const emphasis: EmphasisParser = lazy(() => creator(surround(
11
11
  str('*'),
12
12
  startTight(some(union([
13
13
  strong,
14
- some(inline, delimiter(/\*/)),
14
+ some(inline, blank('', /\*/)),
15
15
  open(some(inline, '*'), inline),
16
16
  ])), '*'),
17
17
  str('*'), false,
@@ -5,24 +5,24 @@ import { union, some, creator, surround, open, lazy, bind } from '../../combinat
5
5
  import { inline } from '../inline';
6
6
  import { strong } from './strong';
7
7
  import { str } from '../source';
8
- import { startTight, delimiter } from '../util';
8
+ import { startTight, blank } from '../util';
9
9
  import { html, defrag } from 'typed-dom';
10
10
  import { unshift } from 'spica/array';
11
11
 
12
12
  const substrong: IntermediateParser<StrongParser> = lazy(() => some(union([
13
- some(inline, delimiter(/\*\*/)),
13
+ some(inline, blank('', /\*\*/)),
14
14
  open(some(inline, '*'), inline),
15
15
  ])));
16
16
  const subemphasis: IntermediateParser<EmphasisParser> = lazy(() => some(union([
17
17
  strong,
18
- some(inline, delimiter(/\*/)),
18
+ some(inline, blank('', /\*/)),
19
19
  open(some(inline, '*'), inline),
20
20
  ])));
21
21
 
22
22
  export const emstrong: EmStrongParser = lazy(() => creator(surround(
23
23
  str('***'),
24
24
  startTight(some(union([
25
- some(inline, delimiter(/\*/)),
25
+ some(inline, blank('', /\*/)),
26
26
  open(some(inline, '*'), inline),
27
27
  ]))),
28
28
  str(/^\*{1,3}/), false,
@@ -59,11 +59,14 @@ describe('Unit: parser/inline/html', () => {
59
59
  it('basic', () => {
60
60
  assert.deepStrictEqual(inspect(parser('<small> a</small>')), [['<small> a</small>'], '']);
61
61
  assert.deepStrictEqual(inspect(parser('<small> a </small>')), [['<small> a </small>'], '']);
62
+ assert.deepStrictEqual(inspect(parser('<small> a </small>')), [['<small> a </small>'], '']);
62
63
  assert.deepStrictEqual(inspect(parser('<small>a</small>')), [['<small>a</small>'], '']);
63
64
  assert.deepStrictEqual(inspect(parser('<small>a</small>a')), [['<small>a</small>'], 'a']);
64
65
  assert.deepStrictEqual(inspect(parser('<small>a </small>')), [['<small>a </small>'], '']);
65
- assert.deepStrictEqual(inspect(parser('<small>a </small>')), [['<small>a </small>'], '']);
66
+ assert.deepStrictEqual(inspect(parser('<small>a \n </small>')), [['<small>a </small>'], '']);
66
67
  assert.deepStrictEqual(inspect(parser('<small>a\n</small>')), [['<small>a</small>'], '']);
68
+ assert.deepStrictEqual(inspect(parser('<small>a\n </small>')), [['<small>a </small>'], '']);
69
+ assert.deepStrictEqual(inspect(parser('<small>a\n<wbr></small>')), [['<small>a<wbr></small>'], '']);
67
70
  assert.deepStrictEqual(inspect(parser('<small>a\nb</small>')), [['<small>a<br>b</small>'], '']);
68
71
  assert.deepStrictEqual(inspect(parser('<wbr>a')), [['<wbr>'], 'a']);
69
72
  });
@@ -85,22 +88,27 @@ describe('Unit: parser/inline/html', () => {
85
88
  });
86
89
 
87
90
  it('attribute', () => {
88
- assert.deepStrictEqual(inspect(parser('<small constructor>a</small>z')), [['<span class="invalid">&lt;small constructor&gt;a&lt;/small&gt;</span>'], 'z']);
89
- assert.deepStrictEqual(inspect(parser('<small toString>a</small>z')), undefined);
90
- assert.deepStrictEqual(inspect(parser('<bdo>a</bdo>z')), [['<span class="invalid">&lt;bdo&gt;a&lt;/bdo&gt;</span>'], 'z']);
91
- assert.deepStrictEqual(inspect(parser('<bdo >a</bdo>z')), undefined);
92
- assert.deepStrictEqual(inspect(parser('<bdo __proto__>a</bdo>z')), undefined);
93
- assert.deepStrictEqual(inspect(parser('<bdo constructor>a</bdo>z')), [['<span class="invalid">&lt;bdo constructor&gt;a&lt;/bdo&gt;</span>'], 'z']);
94
- assert.deepStrictEqual(inspect(parser('<bdo toString>a</bdo>z')), undefined);
95
- assert.deepStrictEqual(inspect(parser('<bdo dir>a</bdo>z')), [['<span class="invalid">&lt;bdo dir&gt;a&lt;/bdo&gt;</span>'], 'z']);
96
- assert.deepStrictEqual(inspect(parser('<bdo dir=>a</bdo>z')), undefined);
97
- assert.deepStrictEqual(inspect(parser('<bdo dir=rtl>a</bdo>z')), undefined);
98
- assert.deepStrictEqual(inspect(parser('<bdo dir=">a</bdo>z')), undefined);
99
- assert.deepStrictEqual(inspect(parser('<bdo dir="">a</bdo>z')), [['<span class="invalid">&lt;bdo dir=""&gt;a&lt;/bdo&gt;</span>'], 'z']);
100
- assert.deepStrictEqual(inspect(parser('<bdo dir="rtl" dir="rtl">a</bdo>z')), [['<span class="invalid">&lt;bdo dir="rtl" dir="rtl"&gt;a&lt;/bdo&gt;</span>'], 'z']);
101
- assert.deepStrictEqual(inspect(parser('<bdo dir="rtl">a</bdo>z')), [['<bdo dir="rtl">a</bdo>'], 'z']);
102
- assert.deepStrictEqual(inspect(parser('<bdo dir="rtl" >a</bdo>z')), undefined);
103
- assert.deepStrictEqual(inspect(parser('<wbr constructor>z')), [['<wbr class="invalid">'], 'z']);
91
+ assert.deepStrictEqual(inspect(parser('<small >a</small>')), [['<small>a</small>'], '']);
92
+ assert.deepStrictEqual(inspect(parser('<small >a</small>')), [['<small>a</small>'], '']);
93
+ assert.deepStrictEqual(inspect(parser('<small __proto__>a</small>')), undefined);
94
+ assert.deepStrictEqual(inspect(parser('<small constructor>a</small>')), [['<span class="invalid">&lt;small constructor&gt;a&lt;/small&gt;</span>'], '']);
95
+ assert.deepStrictEqual(inspect(parser('<small toString>a</small>')), undefined);
96
+ assert.deepStrictEqual(inspect(parser('<bdo>a</bdo>')), [['<span class="invalid">&lt;bdo&gt;a&lt;/bdo&gt;</span>'], '']);
97
+ assert.deepStrictEqual(inspect(parser('<bdo >a</bdo>')), [['<span class="invalid">&lt;bdo &gt;a&lt;/bdo&gt;</span>'], '']);
98
+ assert.deepStrictEqual(inspect(parser('<bdo __proto__>a</bdo>')), undefined);
99
+ assert.deepStrictEqual(inspect(parser('<bdo constructor>a</bdo>')), [['<span class="invalid">&lt;bdo constructor&gt;a&lt;/bdo&gt;</span>'], '']);
100
+ assert.deepStrictEqual(inspect(parser('<bdo toString>a</bdo>')), undefined);
101
+ assert.deepStrictEqual(inspect(parser('<bdo dir>a</bdo>')), [['<span class="invalid">&lt;bdo dir&gt;a&lt;/bdo&gt;</span>'], '']);
102
+ assert.deepStrictEqual(inspect(parser('<bdo dir=>a</bdo>')), undefined);
103
+ assert.deepStrictEqual(inspect(parser('<bdo dir=rtl>a</bdo>')), undefined);
104
+ assert.deepStrictEqual(inspect(parser('<bdo dir=">a</bdo>')), undefined);
105
+ assert.deepStrictEqual(inspect(parser('<bdo dir="">a</bdo>')), [['<span class="invalid">&lt;bdo dir=""&gt;a&lt;/bdo&gt;</span>'], '']);
106
+ assert.deepStrictEqual(inspect(parser('<bdo dir="rtl" dir="rtl">a</bdo>')), [['<span class="invalid">&lt;bdo dir="rtl" dir="rtl"&gt;a&lt;/bdo&gt;</span>'], '']);
107
+ assert.deepStrictEqual(inspect(parser('<bdo dir="rtl">a</bdo>')), [['<bdo dir="rtl">a</bdo>'], '']);
108
+ assert.deepStrictEqual(inspect(parser('<bdo dir="rtl" >a</bdo>')), [['<bdo dir="rtl">a</bdo>'], '']);
109
+ assert.deepStrictEqual(inspect(parser('<bdo dir="rtl" >a</bdo>')), [['<bdo dir="rtl">a</bdo>'], '']);
110
+ assert.deepStrictEqual(inspect(parser('<bdo dir="rtl">a</bdo>')), [['<bdo dir="rtl">a</bdo>'], '']);
111
+ assert.deepStrictEqual(inspect(parser('<wbr constructor>')), [['<wbr class="invalid">'], '']);
104
112
  });
105
113
 
106
114
  });
@@ -2,10 +2,10 @@ import { undefined } from 'spica/global';
2
2
  import { isFrozen, ObjectEntries, ObjectFreeze, ObjectSetPrototypeOf, ObjectValues } from 'spica/alias';
3
3
  import { MarkdownParser } from '../../../markdown';
4
4
  import { HTMLParser } from '../inline';
5
- import { union, some, validate, context, creator, surround, match, lazy } from '../../combinator';
5
+ import { union, some, validate, context, creator, surround, open, match, lazy } from '../../combinator';
6
6
  import { inline } from '../inline';
7
7
  import { str } from '../source';
8
- import { startLoose, trimNodeEndBR } from '../util';
8
+ import { startLoose, blank } from '../util';
9
9
  import { html as h, defrag } from 'typed-dom';
10
10
  import { memoize } from 'spica/memoize';
11
11
  import { Cache } from 'spica/cache';
@@ -26,17 +26,17 @@ export const html: HTMLParser = lazy(() => creator(validate('<', validate(/^<[a-
26
26
  memoize(
27
27
  ([, tag]) =>
28
28
  surround(
29
- `<${tag}`, some(union([attribute])), '>', true,
29
+ `<${tag}`, some(union([attribute])), /^\s*>/, true,
30
30
  ([, bs = []], rest) =>
31
31
  [[h(tag as 'span', attributes('html', [], attrspec[tag], bs))], rest]),
32
32
  ([, tag]) => tag)),
33
33
  match(
34
- /^(?=<(sup|sub|small|bdo|bdi)(?=[^\S\n]|>))/,
34
+ /^(?=<(sup|sub|small)(?=[^\S\n]|>))/,
35
35
  memoize(
36
36
  ([, tag]) =>
37
37
  validate(`<${tag}`, `</${tag}>`,
38
38
  surround<HTMLParser.TagParser, string>(surround(
39
- str(`<${tag}`), some(attribute), str('>'), true),
39
+ str(`<${tag}`), some(attribute), str(/^\s*>/), true),
40
40
  startLoose(
41
41
  context((() => {
42
42
  switch (tag) {
@@ -58,25 +58,49 @@ export const html: HTMLParser = lazy(() => creator(validate('<', validate(/^<[a-
58
58
  }},
59
59
  };
60
60
  default:
61
+ assert(false);
61
62
  return {};
62
63
  }
63
64
  })(),
64
- some(union([inline]), `</${tag}>`)), `</${tag}>`),
65
+ some(union([
66
+ some(inline, blank(/\n?/, `</${tag}>`)),
67
+ open(/^\n?/, some(inline, '</'), true),
68
+ ]), `</${tag}>`)), `</${tag}>`),
65
69
  str(`</${tag}>`), false,
66
70
  ([as, bs, cs], rest, context) =>
67
- [[elem(tag, as, trimNodeEndBR(defrag(bs)), cs, context)], rest])),
71
+ [[elem(tag, as, defrag(bs), cs, context)], rest])),
68
72
  ([, tag]) => tag)),
73
+ match(
74
+ /^(?=<(bdo|bdi)(?=[^\S\n]|>))/,
75
+ memoize(
76
+ ([, tag]) =>
77
+ validate(`<${tag}`, `</${tag}>`,
78
+ surround<HTMLParser.TagParser, string>(surround(
79
+ str(`<${tag}`), some(attribute), str(/^\s*>/), true),
80
+ startLoose(some(union([
81
+ some(inline, blank(/\n?/, `</${tag}>`)),
82
+ open(/^\n?/, some(inline, '</'), true),
83
+ ]), `</${tag}>`), `</${tag}>`),
84
+ str(`</${tag}>`), false,
85
+ ([as, bs, cs], rest) =>
86
+ [[elem(tag, as, defrag(bs), cs, {})], rest],
87
+ ([as, bs], rest) =>
88
+ as.length === 1 ? [unshift(as, bs), rest] : undefined)),
89
+ ([, tag]) => tag)),
69
90
  match(
70
91
  /^(?=<([a-z]+)(?=[^\S\n]|>))/,
71
92
  memoize(
72
93
  ([, tag]) =>
73
94
  validate(`<${tag}`, `</${tag}>`,
74
95
  surround<HTMLParser.TagParser, string>(surround(
75
- str(`<${tag}`), some(attribute), str('>'), true),
76
- startLoose(some(union([inline]), `</${tag}>`), `</${tag}>`),
96
+ str(`<${tag}`), some(attribute), str(/^\s*>/), true),
97
+ startLoose(some(union([
98
+ some(inline, blank(/\n?/, `</${tag}>`)),
99
+ open(/^\n?/, some(inline, '</'), true),
100
+ ]), `</${tag}>`), `</${tag}>`),
77
101
  str(`</${tag}>`), false,
78
102
  ([as, bs, cs], rest) =>
79
- [[elem(tag, as, trimNodeEndBR(defrag(bs)), cs, {})], rest],
103
+ [[elem(tag, as, defrag(bs), cs, {})], rest],
80
104
  ([as, bs], rest) =>
81
105
  as.length === 1 ? [unshift(as, bs), rest] : undefined)),
82
106
  ([, tag]) => tag,
@@ -89,6 +113,7 @@ export const attribute: HTMLParser.TagParser.AttributeParser = union([
89
113
 
90
114
  function elem(tag: string, as: string[], bs: (HTMLElement | string)[], cs: string[], context: MarkdownParser.Context): HTMLElement {
91
115
  assert(as.length > 0);
116
+ assert(as[0][0] === '<' && as[as.length - 1].slice(-1) === '>');
92
117
  assert(bs.length === defrag(bs).length);
93
118
  assert(cs.length === 1);
94
119
  if (!tags.includes(tag)) return invalid('tag', `Invalid HTML tag <${tag}>.`, as, bs, cs);
@@ -110,8 +135,7 @@ function elem(tag: string, as: string[], bs: (HTMLElement | string)[], cs: strin
110
135
  }
111
136
  let attrs: Record<string, string | undefined> | undefined;
112
137
  switch (true) {
113
- case as[as.length - 1] !== '>'
114
- || 'data-invalid-syntax' in (attrs = attributes('html', [], attrspec[tag], as.slice(1, -1) as string[])):
138
+ case 'data-invalid-syntax' in (attrs = attributes('html', [], attrspec[tag], as.slice(1, -1) as string[])):
115
139
  return invalid('attribute', 'Invalid HTML attribute.', as, bs, cs);
116
140
  default:
117
141
  assert(attrs);
@@ -18,7 +18,6 @@ describe('Unit: parser/inline/insertion', () => {
18
18
  it('basic', () => {
19
19
  assert.deepStrictEqual(inspect(parser('++a++')), [['<ins>a</ins>'], '']);
20
20
  assert.deepStrictEqual(inspect(parser('++a+b++')), [['<ins>a+b</ins>'], '']);
21
- assert.deepStrictEqual(inspect(parser('++a ++')), [['<ins>a </ins>'], '']);
22
21
  assert.deepStrictEqual(inspect(parser('++ ++')), [['<ins> </ins>'], '']);
23
22
  assert.deepStrictEqual(inspect(parser('++ a++')), [['<ins> a</ins>'], '']);
24
23
  assert.deepStrictEqual(inspect(parser('++ a ++')), [['<ins> a </ins>'], '']);
@@ -26,7 +25,11 @@ describe('Unit: parser/inline/insertion', () => {
26
25
  assert.deepStrictEqual(inspect(parser('++\na++')), [['<ins><br>a</ins>'], '']);
27
26
  assert.deepStrictEqual(inspect(parser('++\\\na++')), [['<ins><span class="linebreak"> </span>a</ins>'], '']);
28
27
  assert.deepStrictEqual(inspect(parser('++<wbr>a++')), [['<ins><wbr>a</ins>'], '']);
28
+ assert.deepStrictEqual(inspect(parser('++a ++')), [['<ins>a </ins>'], '']);
29
+ assert.deepStrictEqual(inspect(parser('++a \n ++')), [['<ins>a </ins>'], '']);
29
30
  assert.deepStrictEqual(inspect(parser('++a\n++')), [['<ins>a</ins>'], '']);
31
+ assert.deepStrictEqual(inspect(parser('++a\n ++')), [['<ins>a </ins>'], '']);
32
+ assert.deepStrictEqual(inspect(parser('++a\n<wbr>++')), [['<ins>a<wbr></ins>'], '']);
30
33
  assert.deepStrictEqual(inspect(parser('++a\nb++')), [['<ins>a<br>b</ins>'], '']);
31
34
  assert.deepStrictEqual(inspect(parser('++a\\\nb++')), [['<ins>a<span class="linebreak"> </span>b</ins>'], '']);
32
35
  assert.deepStrictEqual(inspect(parser('++\\+++')), [['<ins>+</ins>'], '']);