securemark 0.295.1 → 0.295.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.
Files changed (169) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/design.md +4 -3
  3. package/dist/index.js +514 -459
  4. package/markdown.d.ts +13 -28
  5. package/package.json +1 -1
  6. package/src/combinator/control/constraint/block.test.ts +6 -8
  7. package/src/combinator/control/constraint/contract.ts +7 -7
  8. package/src/combinator/control/constraint/line.test.ts +7 -9
  9. package/src/combinator/control/constraint/line.ts +0 -1
  10. package/src/combinator/control/manipulation/clear.ts +2 -2
  11. package/src/combinator/control/manipulation/convert.ts +3 -3
  12. package/src/combinator/control/manipulation/duplicate.ts +4 -4
  13. package/src/combinator/control/manipulation/fallback.ts +2 -2
  14. package/src/combinator/control/manipulation/fence.ts +3 -3
  15. package/src/combinator/control/manipulation/indent.test.ts +20 -22
  16. package/src/combinator/control/manipulation/indent.ts +2 -2
  17. package/src/combinator/control/manipulation/recovery.ts +3 -3
  18. package/src/combinator/control/manipulation/reverse.ts +2 -2
  19. package/src/combinator/control/manipulation/scope.ts +2 -4
  20. package/src/combinator/control/manipulation/surround.ts +32 -32
  21. package/src/combinator/control/monad/bind.ts +6 -6
  22. package/src/combinator/control/monad/fmap.ts +6 -6
  23. package/src/combinator/data/data.ts +2 -2
  24. package/src/combinator/data/{parser/context/delimiter.ts → delimiter.ts} +4 -4
  25. package/src/combinator/data/parser/context.test.ts +12 -11
  26. package/src/combinator/data/parser/context.ts +13 -14
  27. package/src/combinator/data/parser/inits.ts +5 -5
  28. package/src/combinator/data/parser/sequence.test.ts +12 -13
  29. package/src/combinator/data/parser/sequence.ts +5 -5
  30. package/src/combinator/data/parser/some.test.ts +15 -16
  31. package/src/combinator/data/parser/some.ts +5 -6
  32. package/src/combinator/data/parser/subsequence.test.ts +16 -17
  33. package/src/combinator/data/parser/subsequence.ts +3 -3
  34. package/src/combinator/data/parser/tails.ts +3 -3
  35. package/src/combinator/data/parser/union.test.ts +12 -13
  36. package/src/combinator/data/parser/union.ts +3 -3
  37. package/src/combinator/data/parser.ts +55 -32
  38. package/src/debug.test.ts +5 -3
  39. package/src/parser/api/bind.ts +8 -6
  40. package/src/parser/api/header.ts +4 -4
  41. package/src/parser/api/normalize.ts +2 -1
  42. package/src/parser/api/parse.test.ts +7 -6
  43. package/src/parser/api/parse.ts +9 -8
  44. package/src/parser/autolink.test.ts +18 -18
  45. package/src/parser/block/blockquote.test.ts +79 -79
  46. package/src/parser/block/blockquote.ts +5 -5
  47. package/src/parser/block/codeblock.test.ts +57 -57
  48. package/src/parser/block/codeblock.ts +3 -3
  49. package/src/parser/block/dlist.test.ts +57 -57
  50. package/src/parser/block/dlist.ts +6 -6
  51. package/src/parser/block/extension/aside.test.ts +9 -9
  52. package/src/parser/block/extension/aside.ts +5 -5
  53. package/src/parser/block/extension/example.test.ts +19 -19
  54. package/src/parser/block/extension/example.ts +6 -6
  55. package/src/parser/block/extension/fig.test.ts +36 -36
  56. package/src/parser/block/extension/figbase.test.ts +16 -16
  57. package/src/parser/block/extension/figbase.ts +2 -2
  58. package/src/parser/block/extension/figure.test.ts +63 -63
  59. package/src/parser/block/extension/figure.ts +3 -3
  60. package/src/parser/block/extension/message.test.ts +14 -14
  61. package/src/parser/block/extension/message.ts +5 -5
  62. package/src/parser/block/extension/placeholder.test.ts +13 -13
  63. package/src/parser/block/extension/placeholder.ts +2 -2
  64. package/src/parser/block/extension/table.test.ts +76 -76
  65. package/src/parser/block/extension/table.ts +14 -14
  66. package/src/parser/block/extension.test.ts +24 -24
  67. package/src/parser/block/heading.test.ts +59 -59
  68. package/src/parser/block/heading.ts +7 -7
  69. package/src/parser/block/ilist.test.ts +8 -12
  70. package/src/parser/block/ilist.ts +6 -6
  71. package/src/parser/block/mathblock.test.ts +32 -32
  72. package/src/parser/block/mathblock.ts +3 -3
  73. package/src/parser/block/mediablock.ts +3 -3
  74. package/src/parser/block/olist.test.ts +103 -103
  75. package/src/parser/block/olist.ts +5 -5
  76. package/src/parser/block/pagebreak.test.ts +16 -16
  77. package/src/parser/block/pagebreak.ts +2 -2
  78. package/src/parser/block/paragraph.test.ts +58 -58
  79. package/src/parser/block/paragraph.ts +2 -2
  80. package/src/parser/block/reply/cite.test.ts +40 -40
  81. package/src/parser/block/reply/cite.ts +6 -6
  82. package/src/parser/block/reply/quote.test.ts +51 -51
  83. package/src/parser/block/reply/quote.ts +3 -3
  84. package/src/parser/block/reply.test.ts +20 -20
  85. package/src/parser/block/reply.ts +3 -3
  86. package/src/parser/block/sidefence.test.ts +48 -48
  87. package/src/parser/block/sidefence.ts +4 -4
  88. package/src/parser/block/table.test.ts +50 -50
  89. package/src/parser/block/table.ts +12 -12
  90. package/src/parser/block/ulist.test.ts +53 -53
  91. package/src/parser/block/ulist.ts +6 -6
  92. package/src/parser/block.ts +6 -4
  93. package/src/parser/context.ts +39 -0
  94. package/src/parser/header.test.ts +23 -23
  95. package/src/parser/header.ts +5 -5
  96. package/src/parser/inline/annotation.test.ts +43 -43
  97. package/src/parser/inline/annotation.ts +14 -4
  98. package/src/parser/inline/autolink/account.test.ts +33 -33
  99. package/src/parser/inline/autolink/account.ts +9 -9
  100. package/src/parser/inline/autolink/anchor.test.ts +22 -22
  101. package/src/parser/inline/autolink/anchor.ts +4 -4
  102. package/src/parser/inline/autolink/channel.test.ts +15 -15
  103. package/src/parser/inline/autolink/email.test.ts +37 -37
  104. package/src/parser/inline/autolink/email.ts +2 -2
  105. package/src/parser/inline/autolink/hashnum.test.ts +33 -33
  106. package/src/parser/inline/autolink/hashnum.ts +6 -5
  107. package/src/parser/inline/autolink/hashtag.test.ts +60 -60
  108. package/src/parser/inline/autolink/hashtag.ts +4 -4
  109. package/src/parser/inline/autolink/url.test.ts +75 -75
  110. package/src/parser/inline/autolink/url.ts +4 -4
  111. package/src/parser/inline/bracket.test.ts +70 -70
  112. package/src/parser/inline/bracket.ts +35 -32
  113. package/src/parser/inline/code.test.ts +31 -31
  114. package/src/parser/inline/code.ts +4 -4
  115. package/src/parser/inline/deletion.test.ts +28 -28
  116. package/src/parser/inline/deletion.ts +4 -4
  117. package/src/parser/inline/emphasis.test.ts +40 -40
  118. package/src/parser/inline/emphasis.ts +3 -3
  119. package/src/parser/inline/emstrong.test.ts +101 -101
  120. package/src/parser/inline/emstrong.ts +23 -23
  121. package/src/parser/inline/extension/index.test.ts +92 -92
  122. package/src/parser/inline/extension/index.ts +5 -5
  123. package/src/parser/inline/extension/indexee.ts +5 -5
  124. package/src/parser/inline/extension/indexer.test.ts +24 -24
  125. package/src/parser/inline/extension/indexer.ts +2 -2
  126. package/src/parser/inline/extension/label.test.ts +33 -33
  127. package/src/parser/inline/extension/label.ts +2 -2
  128. package/src/parser/inline/extension/placeholder.test.ts +43 -43
  129. package/src/parser/inline/extension/placeholder.ts +4 -4
  130. package/src/parser/inline/html.test.ts +108 -108
  131. package/src/parser/inline/html.ts +10 -10
  132. package/src/parser/inline/htmlentity.test.ts +38 -38
  133. package/src/parser/inline/htmlentity.ts +5 -5
  134. package/src/parser/inline/insertion.test.ts +28 -28
  135. package/src/parser/inline/insertion.ts +4 -4
  136. package/src/parser/inline/italic.test.ts +55 -55
  137. package/src/parser/inline/italic.ts +4 -4
  138. package/src/parser/inline/link.test.ts +186 -187
  139. package/src/parser/inline/link.ts +16 -17
  140. package/src/parser/inline/mark.test.ts +31 -31
  141. package/src/parser/inline/mark.ts +5 -5
  142. package/src/parser/inline/math.test.ts +132 -132
  143. package/src/parser/inline/math.ts +2 -2
  144. package/src/parser/inline/media.test.ts +91 -91
  145. package/src/parser/inline/media.ts +15 -15
  146. package/src/parser/inline/reference.test.ts +109 -109
  147. package/src/parser/inline/reference.ts +15 -54
  148. package/src/parser/inline/remark.test.ts +50 -50
  149. package/src/parser/inline/remark.ts +5 -5
  150. package/src/parser/inline/ruby.test.ts +45 -45
  151. package/src/parser/inline/ruby.ts +17 -17
  152. package/src/parser/inline/shortmedia.test.ts +10 -10
  153. package/src/parser/inline/strong.test.ts +37 -37
  154. package/src/parser/inline/strong.ts +3 -3
  155. package/src/parser/inline/template.test.ts +23 -23
  156. package/src/parser/inline/template.ts +5 -5
  157. package/src/parser/inline.test.ts +224 -223
  158. package/src/parser/segment.ts +2 -2
  159. package/src/parser/source/escapable.test.ts +24 -24
  160. package/src/parser/source/escapable.ts +8 -8
  161. package/src/parser/source/line.test.ts +18 -18
  162. package/src/parser/source/str.ts +2 -2
  163. package/src/parser/source/text.test.ts +85 -85
  164. package/src/parser/source/text.ts +5 -5
  165. package/src/parser/source/unescapable.test.ts +24 -24
  166. package/src/parser/source/unescapable.ts +5 -5
  167. package/src/parser/util.ts +10 -11
  168. package/src/parser/visibility.ts +8 -9
  169. package/src/util/quote.ts +2 -1
@@ -1,31 +1,31 @@
1
1
  import { figbase } from './figbase';
2
2
  import { some } from '../../../combinator';
3
3
  import { input } from '../../../combinator/data/parser';
4
+ import { Context } from '../../context';
4
5
  import { inspect } from '../../../debug.test';
5
6
 
6
7
  describe('Unit: parser/block/extension/figbase', () => {
7
8
  describe('figbase', () => {
8
- const parser = (source: string) => some(figbase)(input(source, ctx));
9
- const { context: ctx } = input('', {});
9
+ const parser = some(figbase);
10
10
 
11
11
  it('invalid', () => {
12
- assert.deepStrictEqual(inspect(parser('\n$-0'), ctx), undefined);
13
- assert.deepStrictEqual(inspect(parser('$-0.'), ctx), undefined);
14
- assert.deepStrictEqual(inspect(parser('$-0.1'), ctx), undefined);
15
- assert.deepStrictEqual(inspect(parser('$-1'), ctx), undefined);
16
- assert.deepStrictEqual(inspect(parser('$-0\n 0'), ctx), undefined);
17
- assert.deepStrictEqual(inspect(parser('$-name'), ctx), undefined);
18
- assert.deepStrictEqual(inspect(parser('$-name-0'), ctx), undefined);
19
- assert.deepStrictEqual(inspect(parser('$group-0'), ctx), undefined);
20
- assert.deepStrictEqual(inspect(parser(' [$-0]'), ctx), undefined);
12
+ assert.deepStrictEqual(inspect(parser, input('\n$-0', new Context())), undefined);
13
+ assert.deepStrictEqual(inspect(parser, input('$-0.', new Context())), undefined);
14
+ assert.deepStrictEqual(inspect(parser, input('$-0.1', new Context())), undefined);
15
+ assert.deepStrictEqual(inspect(parser, input('$-1', new Context())), undefined);
16
+ assert.deepStrictEqual(inspect(parser, input('$-0\n 0', new Context())), undefined);
17
+ assert.deepStrictEqual(inspect(parser, input('$-name', new Context())), undefined);
18
+ assert.deepStrictEqual(inspect(parser, input('$-name-0', new Context())), undefined);
19
+ assert.deepStrictEqual(inspect(parser, input('$group-0', new Context())), undefined);
20
+ assert.deepStrictEqual(inspect(parser, input(' [$-0]', new Context())), undefined);
21
21
  });
22
22
 
23
23
  it('valid', () => {
24
- assert.deepStrictEqual(inspect(parser('$-0'), ctx), [['<figure data-label="$-0" data-group="$" hidden=""></figure>'], '']);
25
- assert.deepStrictEqual(inspect(parser('$-0.0'), ctx), [['<figure data-label="$-0.0" data-group="$" hidden=""></figure>'], '']);
26
- assert.deepStrictEqual(inspect(parser('$-1.0'), ctx), [['<figure data-label="$-1.0" data-group="$" hidden=""></figure>'], '']);
27
- assert.deepStrictEqual(inspect(parser('$-0\n \n'), ctx), [['<figure data-label="$-0" data-group="$" hidden=""></figure>'], ' \n']);
28
- assert.deepStrictEqual(inspect(parser('[$-0]'), ctx), [['<figure data-label="$-0" data-group="$" hidden=""></figure>'], '']);
24
+ assert.deepStrictEqual(inspect(parser, input('$-0', new Context())), [['<figure data-label="$-0" data-group="$" hidden=""></figure>'], '']);
25
+ assert.deepStrictEqual(inspect(parser, input('$-0.0', new Context())), [['<figure data-label="$-0.0" data-group="$" hidden=""></figure>'], '']);
26
+ assert.deepStrictEqual(inspect(parser, input('$-1.0', new Context())), [['<figure data-label="$-1.0" data-group="$" hidden=""></figure>'], '']);
27
+ assert.deepStrictEqual(inspect(parser, input('$-0\n \n', new Context())), [['<figure data-label="$-0" data-group="$" hidden=""></figure>'], ' \n']);
28
+ assert.deepStrictEqual(inspect(parser, input('[$-0]', new Context())), [['<figure data-label="$-0" data-group="$" hidden=""></figure>'], '']);
29
29
  });
30
30
 
31
31
  });
@@ -1,5 +1,5 @@
1
1
  import { ExtensionParser } from '../../block';
2
- import { List, Data } from '../../../combinator/data/parser';
2
+ import { List, Node } from '../../../combinator/data/parser';
3
3
  import { union, block, line, validate, fmap } from '../../../combinator';
4
4
  import { label } from '../../inline/extension/label';
5
5
  import { html } from 'typed-dom/dom';
@@ -11,7 +11,7 @@ export const figbase: ExtensionParser.FigbaseParser = block(fmap(
11
11
  const label = el.getAttribute('data-label')!;
12
12
  const group = label.split('-', 1)[0];
13
13
  return new List([
14
- new Data(html('figure', {
14
+ new Node(html('figure', {
15
15
  'data-label': label,
16
16
  'data-group': group,
17
17
  hidden: '',
@@ -1,78 +1,78 @@
1
1
  import { figure } from './figure';
2
2
  import { some } from '../../../combinator';
3
3
  import { input } from '../../../combinator/data/parser';
4
+ import { Context } from '../../context';
4
5
  import { inspect } from '../../../debug.test';
5
6
 
6
7
  describe('Unit: parser/block/extension/figure', () => {
7
8
  describe('figure', () => {
8
- const parser = (source: string) => some(figure)(input(source, ctx));
9
- const { context: ctx } = input('', {});
9
+ const parser = some(figure);
10
10
 
11
11
  it('invalid', () => {
12
- assert.deepStrictEqual(inspect(parser('~~~figure\n!https://host\n~~~'), ctx), [['<pre class="invalid" translate="no">~~~figure\n!https://host\n~~~</pre>'], '']);
13
- assert.deepStrictEqual(inspect(parser('~~~figure $group-name]\n!https://host\n~~~'), ctx), [['<pre class="invalid" translate="no">~~~figure $group-name]\n!https://host\n~~~</pre>'], '']);
14
- assert.deepStrictEqual(inspect(parser('~~~figure [$group-name\n!https://host\n~~~'), ctx), [['<pre class="invalid" translate="no">~~~figure [$group-name\n!https://host\n~~~</pre>'], '']);
15
- assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\nhttps://host\n~~~'), ctx), [['<pre class="invalid" translate="no">~~~figure [$group-name]\nhttps://host\n~~~</pre>'], '']);
16
- assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n!https://host\n\\\n~~~'), ctx), [['<pre class="invalid" translate="no">~~~figure [$group-name]\n!https://host\n\\\n~~~</pre>'], '']);
17
- assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n!https://host\na\n~~~'), ctx), [['<pre class="invalid" translate="no">~~~figure [$group-name]\n!https://host\na\n~~~</pre>'], '']);
18
- assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n!https://host\n\n\n\n~~~'), ctx), [['<pre class="invalid" translate="no">~~~figure [$group-name]\n!https://host\n\n\n\n~~~</pre>'], '']);
19
- assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n !https://host\n~~~'), ctx), [['<pre class="invalid" translate="no">~~~figure [$group-name]\n !https://host\n~~~</pre>'], '']);
20
- assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n!https://host\n~~~\n~~~'), ctx), [['<pre class="invalid" translate="no">~~~figure [$group-name]\n!https://host\n~~~\n~~~</pre>'], '']);
21
- assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n!https://host\n\ncaption\n~~~\n~~~'), ctx), [['<pre class="invalid" translate="no">~~~figure [$group-name]\n!https://host\n\ncaption\n~~~\n~~~</pre>'], '']);
22
- assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n!https://host\n~~~~'), ctx), [['<pre class="invalid" translate="no">~~~figure [$group-name]\n!https://host\n~~~~</pre>'], '']);
23
- assert.deepStrictEqual(inspect(parser('~~~~figure [$group-name]\n!https://host\n~~~'), ctx), [['<pre class="invalid" translate="no">~~~~figure [$group-name]\n!https://host\n~~~</pre>'], '']);
24
- assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]a\nhttps://host\n~~~'), ctx), [['<pre class="invalid" translate="no">~~~figure [$group-name]a\nhttps://host\n~~~</pre>'], '']);
25
- assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]a\n!https://host\n~~~'), ctx), [['<pre class="invalid" translate="no">~~~figure [$group-name]a\n!https://host\n~~~</pre>'], '']);
26
- assert.deepStrictEqual(inspect(parser('~~~figure [$group-name] a\nhttps://host\n~~~'), ctx), [['<pre class="invalid" translate="no">~~~figure [$group-name] a\nhttps://host\n~~~</pre>'], '']);
27
- assert.deepStrictEqual(inspect(parser('~~~figure [$group-name] a\n!https://host\n~~~'), ctx), [['<figure data-type="media" data-label="group-name" data-group="group" class="invalid"><figcaption><span class="figindex"></span><span class="figtext"></span></figcaption><div><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt="https://host"></a></div></figure>'], '']);
28
- assert.deepStrictEqual(inspect(parser('~~~figure a[$group-name]\n!https://host\n~~~'), ctx), [['<pre class="invalid" translate="no">~~~figure a[$group-name]\n!https://host\n~~~</pre>'], '']);
29
- assert.deepStrictEqual(inspect(parser('~~~figure a [$group-name]\n!https://host\n~~~'), ctx), [['<pre class="invalid" translate="no">~~~figure a [$group-name]\n!https://host\n~~~</pre>'], '']);
30
- assert.deepStrictEqual(inspect(parser('~~~ [$group-name]\n!https://host\n~~~'), ctx), undefined);
31
- assert.deepStrictEqual(inspect(parser('~~~ $group-name\n!https://host\n~~~'), ctx), undefined);
32
- assert.deepStrictEqual(inspect(parser(' ~~~figure [$group-name]\n!https://host\n~~~'), ctx), undefined);
33
- assert.deepStrictEqual(inspect(parser('~~~figure [$-name]\n!https://host\n~~~'), ctx), [['<figure data-type="media" data-label="$-name" data-group="$" class="invalid"><figcaption><span class="figindex"></span><span class="figtext"></span></figcaption><div><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt="https://host"></a></div></figure>'], '']);
34
- assert.deepStrictEqual(inspect(parser('~~~figure [$fig-name]\n> \n\n~~~'), ctx), [['<figure data-type="quote" data-label="fig-name" data-group="fig" class="invalid"><figcaption><span class="figindex"></span><span class="figtext"></span></figcaption><div><blockquote></blockquote></div></figure>'], '']);
35
- assert.deepStrictEqual(inspect(parser('~~~figure [$figure-name]\n> \n\n~~~'), ctx), [['<figure data-type="quote" data-label="figure-name" data-group="figure" class="invalid"><figcaption><span class="figindex"></span><span class="figtext"></span></figcaption><div><blockquote></blockquote></div></figure>'], '']);
36
- assert.deepStrictEqual(inspect(parser('~~~figure [$table-name]\n> \n\n~~~'), ctx), [['<figure data-type="quote" data-label="table-name" data-group="table" class="invalid"><figcaption><span class="figindex"></span><span class="figtext"></span></figcaption><div><blockquote></blockquote></div></figure>'], '']);
37
- assert.deepStrictEqual(inspect(parser(`~~~figure [$group-name]\n0${'\n'.repeat(301)}~~~`), ctx, '>'), [['<pre class="invalid" translate="no">'], '']);
38
- assert.deepStrictEqual(inspect(parser(`~~~figure [$group-name]\n~~~\n0${'\n'.repeat(301)}~~~\n~~~`), ctx, '>'), [['<pre class="invalid" translate="no">'], `${'\n'.repeat(300)}~~~\n~~~`]);
12
+ assert.deepStrictEqual(inspect(parser, input('~~~figure\n!https://host\n~~~', new Context())), [['<pre class="invalid" translate="no">~~~figure\n!https://host\n~~~</pre>'], '']);
13
+ assert.deepStrictEqual(inspect(parser, input('~~~figure $group-name]\n!https://host\n~~~', new Context())), [['<pre class="invalid" translate="no">~~~figure $group-name]\n!https://host\n~~~</pre>'], '']);
14
+ assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name\n!https://host\n~~~', new Context())), [['<pre class="invalid" translate="no">~~~figure [$group-name\n!https://host\n~~~</pre>'], '']);
15
+ assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\nhttps://host\n~~~', new Context())), [['<pre class="invalid" translate="no">~~~figure [$group-name]\nhttps://host\n~~~</pre>'], '']);
16
+ assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\n!https://host\n\\\n~~~', new Context())), [['<pre class="invalid" translate="no">~~~figure [$group-name]\n!https://host\n\\\n~~~</pre>'], '']);
17
+ assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\n!https://host\na\n~~~', new Context())), [['<pre class="invalid" translate="no">~~~figure [$group-name]\n!https://host\na\n~~~</pre>'], '']);
18
+ assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\n!https://host\n\n\n\n~~~', new Context())), [['<pre class="invalid" translate="no">~~~figure [$group-name]\n!https://host\n\n\n\n~~~</pre>'], '']);
19
+ assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\n !https://host\n~~~', new Context())), [['<pre class="invalid" translate="no">~~~figure [$group-name]\n !https://host\n~~~</pre>'], '']);
20
+ assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\n!https://host\n~~~\n~~~', new Context())), [['<pre class="invalid" translate="no">~~~figure [$group-name]\n!https://host\n~~~\n~~~</pre>'], '']);
21
+ assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\n!https://host\n\ncaption\n~~~\n~~~', new Context())), [['<pre class="invalid" translate="no">~~~figure [$group-name]\n!https://host\n\ncaption\n~~~\n~~~</pre>'], '']);
22
+ assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\n!https://host\n~~~~', new Context())), [['<pre class="invalid" translate="no">~~~figure [$group-name]\n!https://host\n~~~~</pre>'], '']);
23
+ assert.deepStrictEqual(inspect(parser, input('~~~~figure [$group-name]\n!https://host\n~~~', new Context())), [['<pre class="invalid" translate="no">~~~~figure [$group-name]\n!https://host\n~~~</pre>'], '']);
24
+ assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]a\nhttps://host\n~~~', new Context())), [['<pre class="invalid" translate="no">~~~figure [$group-name]a\nhttps://host\n~~~</pre>'], '']);
25
+ assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]a\n!https://host\n~~~', new Context())), [['<pre class="invalid" translate="no">~~~figure [$group-name]a\n!https://host\n~~~</pre>'], '']);
26
+ assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name] a\nhttps://host\n~~~', new Context())), [['<pre class="invalid" translate="no">~~~figure [$group-name] a\nhttps://host\n~~~</pre>'], '']);
27
+ assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name] a\n!https://host\n~~~', new Context())), [['<figure data-type="media" data-label="group-name" data-group="group" class="invalid"><figcaption><span class="figindex"></span><span class="figtext"></span></figcaption><div><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt="https://host"></a></div></figure>'], '']);
28
+ assert.deepStrictEqual(inspect(parser, input('~~~figure a[$group-name]\n!https://host\n~~~', new Context())), [['<pre class="invalid" translate="no">~~~figure a[$group-name]\n!https://host\n~~~</pre>'], '']);
29
+ assert.deepStrictEqual(inspect(parser, input('~~~figure a [$group-name]\n!https://host\n~~~', new Context())), [['<pre class="invalid" translate="no">~~~figure a [$group-name]\n!https://host\n~~~</pre>'], '']);
30
+ assert.deepStrictEqual(inspect(parser, input('~~~ [$group-name]\n!https://host\n~~~', new Context())), undefined);
31
+ assert.deepStrictEqual(inspect(parser, input('~~~ $group-name\n!https://host\n~~~', new Context())), undefined);
32
+ assert.deepStrictEqual(inspect(parser, input(' ~~~figure [$group-name]\n!https://host\n~~~', new Context())), undefined);
33
+ assert.deepStrictEqual(inspect(parser, input('~~~figure [$-name]\n!https://host\n~~~', new Context())), [['<figure data-type="media" data-label="$-name" data-group="$" class="invalid"><figcaption><span class="figindex"></span><span class="figtext"></span></figcaption><div><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt="https://host"></a></div></figure>'], '']);
34
+ assert.deepStrictEqual(inspect(parser, input('~~~figure [$fig-name]\n> \n\n~~~', new Context())), [['<figure data-type="quote" data-label="fig-name" data-group="fig" class="invalid"><figcaption><span class="figindex"></span><span class="figtext"></span></figcaption><div><blockquote></blockquote></div></figure>'], '']);
35
+ assert.deepStrictEqual(inspect(parser, input('~~~figure [$figure-name]\n> \n\n~~~', new Context())), [['<figure data-type="quote" data-label="figure-name" data-group="figure" class="invalid"><figcaption><span class="figindex"></span><span class="figtext"></span></figcaption><div><blockquote></blockquote></div></figure>'], '']);
36
+ assert.deepStrictEqual(inspect(parser, input('~~~figure [$table-name]\n> \n\n~~~', new Context())), [['<figure data-type="quote" data-label="table-name" data-group="table" class="invalid"><figcaption><span class="figindex"></span><span class="figtext"></span></figcaption><div><blockquote></blockquote></div></figure>'], '']);
37
+ assert.deepStrictEqual(inspect(parser, input(`~~~figure [$group-name]\n0${'\n'.repeat(301)}~~~`, new Context()), '>'), [['<pre class="invalid" translate="no">'], '']);
38
+ assert.deepStrictEqual(inspect(parser, input(`~~~figure [$group-name]\n~~~\n0${'\n'.repeat(301)}~~~\n~~~`, new Context()), '>'), [['<pre class="invalid" translate="no">'], `${'\n'.repeat(300)}~~~\n~~~`]);
39
39
  });
40
40
 
41
41
  it('valid', () => {
42
- assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n!https://host\n~~~'), ctx), [['<figure data-type="media" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span><span class="figtext"></span></figcaption><div><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt="https://host"></a></div></figure>'], '']);
43
- assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n!https://host\n~~~\n'), ctx), [['<figure data-type="media" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span><span class="figtext"></span></figcaption><div><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt="https://host"></a></div></figure>'], '']);
44
- assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n!https://host\n\n~~~'), ctx), [['<figure data-type="media" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span><span class="figtext"></span></figcaption><div><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt="https://host"></a></div></figure>'], '']);
45
- assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n!https://host\n\n\n~~~'), ctx), [['<figure data-type="media" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span><span class="figtext"></span></figcaption><div><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt="https://host"></a></div></figure>'], '']);
46
- assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n!https://host\n\n\\\n~~~'), ctx), [['<figure data-type="media" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span><span class="figtext">\\</span></figcaption><div><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt="https://host"></a></div></figure>'], '']);
47
- assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n!https://host\n\n!https://caption\n~~~'), ctx), [['<figure data-type="media" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span><span class="figtext">!<a class="url" href="https://caption" target="_blank">https://caption</a></span></figcaption><div><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt="https://host"></a></div></figure>'], '']);
48
- assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n- a\n~~~'), ctx), [['<figure data-type="list" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span><span class="figtext"></span></figcaption><div><ul><li id="index::a">a</li></ul></div></figure>'], '']);
49
- assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n1. a\n~~~'), ctx), [['<figure data-type="list" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span><span class="figtext"></span></figcaption><div><ol><li id="index::a">a</li></ol></div></figure>'], '']);
50
- assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n|\n|-\n|\n~~~'), ctx), [['<figure data-type="table" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span><span class="figtext"></span></figcaption><div><table><thead><tr></tr></thead><tbody><tr></tr></tbody></table></div></figure>'], '']);
51
- assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n```\n\n```\n~~~'), ctx), [['<figure data-type="text" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span><span class="figtext"></span></figcaption><div><pre class="text"></pre></div></figure>'], '']);
52
- assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n```\n~~~\n```\n\n~~~'), ctx), [['<figure data-type="text" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span><span class="figtext"></span></figcaption><div><pre class="text">~~~</pre></div></figure>'], '']);
53
- assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n```\n```\n\ncaption\n~~~'), ctx), [['<figure data-type="text" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span><span class="figtext">caption</span></figcaption><div><pre class="text"></pre></div></figure>'], '']);
54
- assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n$$\n\n$$\n~~~'), ctx), [['<figure data-type="math" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span><span class="figtext"></span></figcaption><div><div class="math" translate="no">$$\n\n$$</div></div></figure>'], '']);
55
- assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n$$\n~~~\n$$\n~~~'), ctx), [['<figure data-type="math" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span><span class="figtext"></span></figcaption><div><div class="math" translate="no">$$\n~~~\n$$</div></div></figure>'], '']);
56
- assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n$$\n\n$$\n\ncaption\n~~~'), ctx), [['<figure data-type="math" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span><span class="figtext">caption</span></figcaption><div><div class="math" translate="no">$$\n\n$$</div></div></figure>'], '']);
57
- assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n~~~\n~~~\n\ncaption\n~~~'), ctx), [['<figure data-type="example" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span><span class="figtext">caption</span></figcaption><div><aside class="example" data-type="markdown"><pre translate="no"></pre><hr><section><h2>References</h2><ol class="references"></ol></section></aside></div></figure>'], '']);
58
- assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n~~~example/markdown\n~~~\n\ncaption\n~~~'), ctx), [['<figure data-type="example" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span><span class="figtext">caption</span></figcaption><div><aside class="example" data-type="markdown"><pre translate="no"></pre><hr><section><h2>References</h2><ol class="references"></ol></section></aside></div></figure>'], '']);
59
- assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n~~~table\n~~~\n\ncaption\n~~~'), ctx), [['<figure data-type="table" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span><span class="figtext">caption</span></figcaption><div><table></table></div></figure>'], '']);
60
- assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n> \n~~~\n\n~~~'), ctx), [['<figure data-type="quote" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span><span class="figtext"></span></figcaption><div><blockquote><pre><br>~~~</pre></blockquote></div></figure>'], '']);
61
- assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n> \n~~~\n\ncaption\n~~~'), ctx), [['<figure data-type="quote" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span><span class="figtext">caption</span></figcaption><div><blockquote><pre><br>~~~</pre></blockquote></div></figure>'], '']);
62
- assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n!https://host\\\n~~~'), ctx), [['<figure data-type="media" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span><span class="figtext"></span></figcaption><div><a href="https://host\\" target="_blank"><img class="media" data-src="https://host\\" alt="https://host\\"></a></div></figure>'], '']);
63
- assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n![]{https://host}\n~~~'), ctx), [['<figure data-type="media" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span><span class="figtext"></span></figcaption><div><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt="https://host"></a></div></figure>'], '']);
64
- assert.deepStrictEqual(inspect(parser('~~~~figure [$group-name]\n!https://host\n~~~~'), ctx), [['<figure data-type="media" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span><span class="figtext"></span></figcaption><div><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt="https://host"></a></div></figure>'], '']);
65
- assert.deepStrictEqual(inspect(parser('~~~figure $group-name\n!https://host\n~~~'), ctx), [['<figure data-type="media" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span><span class="figtext"></span></figcaption><div><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt="https://host"></a></div></figure>'], '']);
66
- assert.deepStrictEqual(inspect(parser('~~~[$group-name]\n!https://host\n~~~'), ctx), [['<figure data-type="media" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span><span class="figtext"></span></figcaption><div><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt="https://host"></a></div></figure>'], '']);
67
- assert.deepStrictEqual(inspect(parser('~~~$group-name\n!https://host\n~~~'), ctx), [['<figure data-type="media" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span><span class="figtext"></span></figcaption><div><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt="https://host"></a></div></figure>'], '']);
68
- assert.deepStrictEqual(inspect(parser('~~~figure [$group-0]\n> \n\n~~~'), ctx), [['<figure data-type="quote" data-label="group-0" data-group="group" class="invalid"><figcaption><span class="figindex"></span><span class="figtext"></span></figcaption><div><blockquote></blockquote></div></figure>'], '']);
69
- assert.deepStrictEqual(inspect(parser('~~~figure [$group-0.0]\n> \n\n~~~'), ctx), [['<figure data-type="quote" data-label="group-0.0" data-group="group" class="invalid"><figcaption><span class="figindex"></span><span class="figtext"></span></figcaption><div><blockquote></blockquote></div></figure>'], '']);
70
- assert.deepStrictEqual(inspect(parser('~~~figure [$-0]\n$$\n\n$$\n~~~'), ctx), [['<figure data-type="math" data-label="$-0" data-group="$" class="invalid"><figcaption><span class="figindex"></span><span class="figtext"></span></figcaption><div><div class="math" translate="no">$$\n\n$$</div></div></figure>'], '']);
71
- assert.deepStrictEqual(inspect(parser('~~~figure [$-0.0]\n$$\n\n$$\n~~~'), ctx), [['<figure data-type="math" data-label="$-0.0" data-group="$" class="invalid"><figcaption><span class="figindex"></span><span class="figtext"></span></figcaption><div><div class="math" translate="no">$$\n\n$$</div></div></figure>'], '']);
72
- assert.deepStrictEqual(inspect(parser('~~~figure [$-name]\n!https://host\n~~~'), ctx), [['<figure data-type="media" data-label="$-name" data-group="$" class="invalid"><figcaption><span class="figindex"></span><span class="figtext"></span></figcaption><div><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt="https://host"></a></div></figure>'], '']);
73
- assert.deepStrictEqual(inspect(parser('~~~figure [$-name]\n$$\n\n$$\n\ncaption\n~~~'), ctx), [['<figure data-type="math" data-label="$-name" data-group="$" class="invalid"><figcaption><span class="figindex"></span><span class="figtext">caption</span></figcaption><div><div class="math" translate="no">$$\n\n$$</div></div></figure>'], '']);
74
- assert.deepStrictEqual(inspect(parser(`~~~figure [$group-name]\n${'> \n'.repeat(500)}\n~~~`), ctx, '>'), [['<figure data-type="quote" data-label="group-name" data-group="group">'], '']);
75
- assert.deepStrictEqual(inspect(parser(`~~~figure [$group-name]\n~~~\n0${'\n'.repeat(300)}~~~\n~~~`), ctx, '>'), [['<figure data-type="example" data-label="group-name" data-group="group">'], '']);
42
+ assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\n!https://host\n~~~', new Context())), [['<figure data-type="media" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span><span class="figtext"></span></figcaption><div><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt="https://host"></a></div></figure>'], '']);
43
+ assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\n!https://host\n~~~\n', new Context())), [['<figure data-type="media" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span><span class="figtext"></span></figcaption><div><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt="https://host"></a></div></figure>'], '']);
44
+ assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\n!https://host\n\n~~~', new Context())), [['<figure data-type="media" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span><span class="figtext"></span></figcaption><div><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt="https://host"></a></div></figure>'], '']);
45
+ assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\n!https://host\n\n\n~~~', new Context())), [['<figure data-type="media" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span><span class="figtext"></span></figcaption><div><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt="https://host"></a></div></figure>'], '']);
46
+ assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\n!https://host\n\n\\\n~~~', new Context())), [['<figure data-type="media" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span><span class="figtext">\\</span></figcaption><div><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt="https://host"></a></div></figure>'], '']);
47
+ assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\n!https://host\n\n!https://caption\n~~~', new Context())), [['<figure data-type="media" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span><span class="figtext">!<a class="url" href="https://caption" target="_blank">https://caption</a></span></figcaption><div><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt="https://host"></a></div></figure>'], '']);
48
+ assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\n- a\n~~~', new Context())), [['<figure data-type="list" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span><span class="figtext"></span></figcaption><div><ul><li id="index::a">a</li></ul></div></figure>'], '']);
49
+ assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\n1. a\n~~~', new Context())), [['<figure data-type="list" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span><span class="figtext"></span></figcaption><div><ol><li id="index::a">a</li></ol></div></figure>'], '']);
50
+ assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\n|\n|-\n|\n~~~', new Context())), [['<figure data-type="table" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span><span class="figtext"></span></figcaption><div><table><thead><tr></tr></thead><tbody><tr></tr></tbody></table></div></figure>'], '']);
51
+ assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\n```\n\n```\n~~~', new Context())), [['<figure data-type="text" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span><span class="figtext"></span></figcaption><div><pre class="text"></pre></div></figure>'], '']);
52
+ assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\n```\n~~~\n```\n\n~~~', new Context())), [['<figure data-type="text" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span><span class="figtext"></span></figcaption><div><pre class="text">~~~</pre></div></figure>'], '']);
53
+ assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\n```\n```\n\ncaption\n~~~', new Context())), [['<figure data-type="text" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span><span class="figtext">caption</span></figcaption><div><pre class="text"></pre></div></figure>'], '']);
54
+ assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\n$$\n\n$$\n~~~', new Context())), [['<figure data-type="math" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span><span class="figtext"></span></figcaption><div><div class="math" translate="no">$$\n\n$$</div></div></figure>'], '']);
55
+ assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\n$$\n~~~\n$$\n~~~', new Context())), [['<figure data-type="math" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span><span class="figtext"></span></figcaption><div><div class="math" translate="no">$$\n~~~\n$$</div></div></figure>'], '']);
56
+ assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\n$$\n\n$$\n\ncaption\n~~~', new Context())), [['<figure data-type="math" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span><span class="figtext">caption</span></figcaption><div><div class="math" translate="no">$$\n\n$$</div></div></figure>'], '']);
57
+ assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\n~~~\n~~~\n\ncaption\n~~~', new Context())), [['<figure data-type="example" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span><span class="figtext">caption</span></figcaption><div><aside class="example" data-type="markdown"><pre translate="no"></pre><hr><section><h2>References</h2><ol class="references"></ol></section></aside></div></figure>'], '']);
58
+ assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\n~~~example/markdown\n~~~\n\ncaption\n~~~', new Context())), [['<figure data-type="example" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span><span class="figtext">caption</span></figcaption><div><aside class="example" data-type="markdown"><pre translate="no"></pre><hr><section><h2>References</h2><ol class="references"></ol></section></aside></div></figure>'], '']);
59
+ assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\n~~~table\n~~~\n\ncaption\n~~~', new Context())), [['<figure data-type="table" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span><span class="figtext">caption</span></figcaption><div><table></table></div></figure>'], '']);
60
+ assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\n> \n~~~\n\n~~~', new Context())), [['<figure data-type="quote" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span><span class="figtext"></span></figcaption><div><blockquote><pre><br>~~~</pre></blockquote></div></figure>'], '']);
61
+ assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\n> \n~~~\n\ncaption\n~~~', new Context())), [['<figure data-type="quote" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span><span class="figtext">caption</span></figcaption><div><blockquote><pre><br>~~~</pre></blockquote></div></figure>'], '']);
62
+ assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\n!https://host\\\n~~~', new Context())), [['<figure data-type="media" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span><span class="figtext"></span></figcaption><div><a href="https://host\\" target="_blank"><img class="media" data-src="https://host\\" alt="https://host\\"></a></div></figure>'], '']);
63
+ assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\n![]{https://host}\n~~~', new Context())), [['<figure data-type="media" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span><span class="figtext"></span></figcaption><div><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt="https://host"></a></div></figure>'], '']);
64
+ assert.deepStrictEqual(inspect(parser, input('~~~~figure [$group-name]\n!https://host\n~~~~', new Context())), [['<figure data-type="media" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span><span class="figtext"></span></figcaption><div><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt="https://host"></a></div></figure>'], '']);
65
+ assert.deepStrictEqual(inspect(parser, input('~~~figure $group-name\n!https://host\n~~~', new Context())), [['<figure data-type="media" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span><span class="figtext"></span></figcaption><div><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt="https://host"></a></div></figure>'], '']);
66
+ assert.deepStrictEqual(inspect(parser, input('~~~[$group-name]\n!https://host\n~~~', new Context())), [['<figure data-type="media" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span><span class="figtext"></span></figcaption><div><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt="https://host"></a></div></figure>'], '']);
67
+ assert.deepStrictEqual(inspect(parser, input('~~~$group-name\n!https://host\n~~~', new Context())), [['<figure data-type="media" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span><span class="figtext"></span></figcaption><div><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt="https://host"></a></div></figure>'], '']);
68
+ assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-0]\n> \n\n~~~', new Context())), [['<figure data-type="quote" data-label="group-0" data-group="group" class="invalid"><figcaption><span class="figindex"></span><span class="figtext"></span></figcaption><div><blockquote></blockquote></div></figure>'], '']);
69
+ assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-0.0]\n> \n\n~~~', new Context())), [['<figure data-type="quote" data-label="group-0.0" data-group="group" class="invalid"><figcaption><span class="figindex"></span><span class="figtext"></span></figcaption><div><blockquote></blockquote></div></figure>'], '']);
70
+ assert.deepStrictEqual(inspect(parser, input('~~~figure [$-0]\n$$\n\n$$\n~~~', new Context())), [['<figure data-type="math" data-label="$-0" data-group="$" class="invalid"><figcaption><span class="figindex"></span><span class="figtext"></span></figcaption><div><div class="math" translate="no">$$\n\n$$</div></div></figure>'], '']);
71
+ assert.deepStrictEqual(inspect(parser, input('~~~figure [$-0.0]\n$$\n\n$$\n~~~', new Context())), [['<figure data-type="math" data-label="$-0.0" data-group="$" class="invalid"><figcaption><span class="figindex"></span><span class="figtext"></span></figcaption><div><div class="math" translate="no">$$\n\n$$</div></div></figure>'], '']);
72
+ assert.deepStrictEqual(inspect(parser, input('~~~figure [$-name]\n!https://host\n~~~', new Context())), [['<figure data-type="media" data-label="$-name" data-group="$" class="invalid"><figcaption><span class="figindex"></span><span class="figtext"></span></figcaption><div><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt="https://host"></a></div></figure>'], '']);
73
+ assert.deepStrictEqual(inspect(parser, input('~~~figure [$-name]\n$$\n\n$$\n\ncaption\n~~~', new Context())), [['<figure data-type="math" data-label="$-name" data-group="$" class="invalid"><figcaption><span class="figindex"></span><span class="figtext">caption</span></figcaption><div><div class="math" translate="no">$$\n\n$$</div></div></figure>'], '']);
74
+ assert.deepStrictEqual(inspect(parser, input(`~~~figure [$group-name]\n${'> \n'.repeat(500)}\n~~~`, new Context()), '>'), [['<figure data-type="quote" data-label="group-name" data-group="group">'], '']);
75
+ assert.deepStrictEqual(inspect(parser, input(`~~~figure [$group-name]\n~~~\n0${'\n'.repeat(300)}~~~\n~~~`, new Context()), '>'), [['<figure data-type="example" data-label="group-name" data-group="group">'], '']);
76
76
  });
77
77
 
78
78
  });
@@ -1,5 +1,5 @@
1
1
  import { ExtensionParser } from '../../block';
2
- import { List, Data, subinput } from '../../../combinator/data/parser';
2
+ import { List, Node, subinput } from '../../../combinator/data/parser';
3
3
  import { union, inits, sequence, some, block, line, fence, rewrite, close, match, convert, fallback, fmap } from '../../../combinator';
4
4
  import { str, contentline, emptyline } from '../../source';
5
5
  import { label, segment as seg_label } from '../../inline/extension/label';
@@ -71,7 +71,7 @@ export const figure: FigureParser = block(fallback(rewrite(segment, fmap(
71
71
  nodes => {
72
72
  const [label, param, content, ...caption] = unwrap(nodes) as [HTMLAnchorElement, string, ...HTMLElement[]];
73
73
  return new List([
74
- new Data(html('figure',
74
+ new Node(html('figure',
75
75
  attributes(label.getAttribute('data-label')!, param, content, caption),
76
76
  [
77
77
  html('figcaption', [
@@ -108,7 +108,7 @@ export const figure: FigureParser = block(fallback(rewrite(segment, fmap(
108
108
  'Invalid content',
109
109
  ];
110
110
  return new List([
111
- new Data(html('pre', {
111
+ new Node(html('pre', {
112
112
  class: 'invalid',
113
113
  translate: 'no',
114
114
  ...invalid('figure', violation[0], violation[1]),
@@ -1,29 +1,29 @@
1
1
  import { message } from './message';
2
2
  import { some } from '../../../combinator';
3
3
  import { input } from '../../../combinator/data/parser';
4
+ import { Context } from '../../context';
4
5
  import { inspect } from '../../../debug.test';
5
6
 
6
7
  describe('Unit: parser/block/extension/message', () => {
7
8
  describe('message', () => {
8
- const parser = (source: string) => some(message)(input(source, ctx));
9
- const { context: ctx } = input('', {});
9
+ const parser = some(message);
10
10
 
11
11
  it('invalid', () => {
12
- assert.deepStrictEqual(inspect(parser('~~~message\n~~~'), ctx), undefined);
13
- assert.deepStrictEqual(inspect(parser('~~~message/\n~~~'), ctx), undefined);
14
- assert.deepStrictEqual(inspect(parser('~~~message/a\n~~~'), ctx), [['<pre class="invalid" translate="no">~~~message/a\n~~~</pre>'], '']);
15
- assert.deepStrictEqual(inspect(parser('~~~message/note a\n~~~'), ctx), [['<pre class="invalid" translate="no">~~~message/note a\n~~~</pre>'], '']);
16
- assert.deepStrictEqual(inspect(parser(`~~~message/note\n0${'\n'.repeat(301)}~~~`), ctx, '>'), [['<pre class="invalid" translate="no">'], '']);
12
+ assert.deepStrictEqual(inspect(parser, input('~~~message\n~~~', new Context())), undefined);
13
+ assert.deepStrictEqual(inspect(parser, input('~~~message/\n~~~', new Context())), undefined);
14
+ assert.deepStrictEqual(inspect(parser, input('~~~message/a\n~~~', new Context())), [['<pre class="invalid" translate="no">~~~message/a\n~~~</pre>'], '']);
15
+ assert.deepStrictEqual(inspect(parser, input('~~~message/note a\n~~~', new Context())), [['<pre class="invalid" translate="no">~~~message/note a\n~~~</pre>'], '']);
16
+ assert.deepStrictEqual(inspect(parser, input(`~~~message/note\n0${'\n'.repeat(301)}~~~`, new Context()), '>'), [['<pre class="invalid" translate="no">'], '']);
17
17
  });
18
18
 
19
19
  it('valid', () => {
20
- assert.deepStrictEqual(inspect(parser('~~~message/note\n~~~'), ctx), [['<section class="message" data-type="note"><h1>Note</h1></section>'], '']);
21
- assert.deepStrictEqual(inspect(parser('~~~message/note\n\n~~~'), ctx), [['<section class="message" data-type="note"><h1>Note</h1></section>'], '']);
22
- assert.deepStrictEqual(inspect(parser('~~~message/note\na\n~~~'), ctx), [['<section class="message" data-type="note"><h1>Note</h1><p>a</p></section>'], '']);
23
- assert.deepStrictEqual(inspect(parser('~~~message/note\na\n\n- \n~~~'), ctx), [['<section class="message" data-type="note"><h1>Note</h1><p>a</p><ul><li></li></ul></section>'], '']);
24
- assert.deepStrictEqual(inspect(parser('~~~message/note\n# a\n~~~'), ctx), [['<section class="message" data-type="note"><h1>Note</h1><p># a</p></section>'], '']);
25
- assert.deepStrictEqual(inspect(parser('~~~message/caution\n~~~'), ctx), [['<section class="message" data-type="caution"><h1>Caution!</h1></section>'], '']);
26
- assert.deepStrictEqual(inspect(parser('~~~message/warning\n~~~'), ctx), [['<section class="message" data-type="warning"><h1>WARNING!!</h1></section>'], '']);
20
+ assert.deepStrictEqual(inspect(parser, input('~~~message/note\n~~~', new Context())), [['<section class="message" data-type="note"><h1>Note</h1></section>'], '']);
21
+ assert.deepStrictEqual(inspect(parser, input('~~~message/note\n\n~~~', new Context())), [['<section class="message" data-type="note"><h1>Note</h1></section>'], '']);
22
+ assert.deepStrictEqual(inspect(parser, input('~~~message/note\na\n~~~', new Context())), [['<section class="message" data-type="note"><h1>Note</h1><p>a</p></section>'], '']);
23
+ assert.deepStrictEqual(inspect(parser, input('~~~message/note\na\n\n- \n~~~', new Context())), [['<section class="message" data-type="note"><h1>Note</h1><p>a</p><ul><li></li></ul></section>'], '']);
24
+ assert.deepStrictEqual(inspect(parser, input('~~~message/note\n# a\n~~~', new Context())), [['<section class="message" data-type="note"><h1>Note</h1><p># a</p></section>'], '']);
25
+ assert.deepStrictEqual(inspect(parser, input('~~~message/caution\n~~~', new Context())), [['<section class="message" data-type="caution"><h1>Caution!</h1></section>'], '']);
26
+ assert.deepStrictEqual(inspect(parser, input('~~~message/warning\n~~~', new Context())), [['<section class="message" data-type="warning"><h1>WARNING!!</h1></section>'], '']);
27
27
  });
28
28
 
29
29
  });
@@ -1,5 +1,5 @@
1
1
  import { ExtensionParser } from '../../block';
2
- import { List, Data, subinput } from '../../../combinator/data/parser';
2
+ import { List, Node, subinput } from '../../../combinator/data/parser';
3
3
  import { union, block, fence, fmap } from '../../../combinator';
4
4
  import { segment } from '../../segment';
5
5
  import { emptyline } from '../../source';
@@ -22,10 +22,10 @@ import MessageParser = ExtensionParser.MessageParser;
22
22
  export const message: MessageParser = block(fmap(
23
23
  fence(/(~{3,})message\/(\S+)(?!\S)([^\n]*)(?:$|\n)/y, 300),
24
24
  // Bug: Type mismatch between outer and inner.
25
- (nodes: List<Data<string>>, context) => {
25
+ (nodes: List<Node<string>>, context) => {
26
26
  const [body, overflow, closer, opener, delim, type, param] = unwrap(nodes);
27
27
  if (!closer || overflow || param.trimStart()) return new List([
28
- new Data(html('pre', {
28
+ new Node(html('pre', {
29
29
  class: 'invalid',
30
30
  translate: 'no',
31
31
  ...invalid(
@@ -43,7 +43,7 @@ export const message: MessageParser = block(fmap(
43
43
  break;
44
44
  default:
45
45
  return new List([
46
- new Data(html('pre', {
46
+ new Node(html('pre', {
47
47
  class: 'invalid',
48
48
  translate: 'no',
49
49
  ...invalid('message', 'type', 'Invalid message type'),
@@ -51,7 +51,7 @@ export const message: MessageParser = block(fmap(
51
51
  ]);
52
52
  }
53
53
  return new List([
54
- new Data(html('section',
54
+ new Node(html('section',
55
55
  {
56
56
  class: `message`,
57
57
  'data-type': type,
@@ -1,27 +1,27 @@
1
1
  import { placeholder } from './placeholder';
2
2
  import { some } from '../../../combinator';
3
3
  import { input } from '../../../combinator/data/parser';
4
+ import { Context } from '../../context';
4
5
 
5
6
  describe('Unit: parser/block/extension/placeholder', () => {
6
7
  describe('placeholder', () => {
7
- const parser = (source: string) => some(placeholder)(input(source, ctx));
8
- const { context: ctx } = input('', {});
8
+ const parser = some(placeholder);
9
9
 
10
10
  it('invalid', () => {
11
- assert(!parser(''));
12
- assert(!parser('\n'));
13
- assert(!parser('~~~'));
14
- assert(!parser('~~~\n'));
15
- assert(!parser('~~~a ~~~\n~~~'));
11
+ assert(!parser(input('', new Context())));
12
+ assert(!parser(input('\n', new Context())));
13
+ assert(!parser(input('~~~', new Context())));
14
+ assert(!parser(input('~~~\n', new Context())));
15
+ assert(!parser(input('~~~a ~~~\n~~~', new Context())));
16
16
  });
17
17
 
18
18
  it('valid', () => {
19
- assert(parser('~~~\n~~~'));
20
- assert(parser('~~~a\n~~~'));
21
- assert(parser('~~~a \n~~~'));
22
- assert(parser('~~~a b \n~~~'));
23
- assert(parser('~~~~a\n~~~~'));
24
- assert(parser('~~~~a\n~~~~\n'));
19
+ assert(parser(input('~~~\n~~~', new Context())));
20
+ assert(parser(input('~~~a\n~~~', new Context())));
21
+ assert(parser(input('~~~a \n~~~', new Context())));
22
+ assert(parser(input('~~~a b \n~~~', new Context())));
23
+ assert(parser(input('~~~~a\n~~~~', new Context())));
24
+ assert(parser(input('~~~~a\n~~~~\n', new Context())));
25
25
  });
26
26
 
27
27
  });
@@ -1,5 +1,5 @@
1
1
  import { ExtensionParser } from '../../block';
2
- import { List, Data } from '../../../combinator/data/parser';
2
+ import { List, Node } from '../../../combinator/data/parser';
3
3
  import { block, fence, clear, fmap } from '../../../combinator';
4
4
  import { unwrap, invalid } from '../../util';
5
5
  import { html } from 'typed-dom/dom';
@@ -17,7 +17,7 @@ export const placeholder: ExtensionParser.PlaceholderParser = block(fmap(
17
17
  nodes => {
18
18
  const [body, overflow, closer, opener, delim] = unwrap(nodes);
19
19
  return new List([
20
- new Data(html('pre', {
20
+ new Node(html('pre', {
21
21
  class: 'invalid',
22
22
  translate: 'no',
23
23
  ...invalid(