securemark 0.299.3 → 0.300.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (241) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/design.md +0 -6
  3. package/dist/index.js +3479 -2750
  4. package/index.d.ts +2 -1
  5. package/index.ts +2 -2
  6. package/markdown.d.ts +209 -183
  7. package/package.json +1 -1
  8. package/src/{parser/api → api}/bind.test.ts +2 -24
  9. package/src/{parser/api → api}/bind.ts +18 -13
  10. package/src/{parser/api → api}/body.test.ts +1 -1
  11. package/src/{parser/api → api}/cache.ts +1 -1
  12. package/src/{parser/api → api}/header.test.ts +1 -1
  13. package/src/{parser/api → api}/header.ts +9 -6
  14. package/src/{parser/api → api}/normalize.test.ts +1 -1
  15. package/src/{parser/api → api}/parse.test.ts +120 -124
  16. package/src/api/parse.ts +30 -0
  17. package/src/api/run.ts +6 -0
  18. package/src/{parser/api.ts → api.ts} +1 -0
  19. package/src/combinator/control/inits.ts +26 -0
  20. package/src/combinator/control/sequence.test.ts +38 -0
  21. package/src/combinator/control/sequence.ts +17 -0
  22. package/src/combinator/control/some.test.ts +41 -0
  23. package/src/combinator/{data/parser → control}/some.ts +39 -26
  24. package/src/combinator/control/state.ts +42 -0
  25. package/src/combinator/control/subsequence.test.ts +47 -0
  26. package/src/combinator/control/subsequence.ts +16 -0
  27. package/src/combinator/control/tails.ts +8 -0
  28. package/src/combinator/control/union.test.ts +37 -0
  29. package/src/combinator/control/union.ts +18 -0
  30. package/src/combinator/{data/delimiter.ts → delimiter.ts} +40 -60
  31. package/src/combinator/effect/backtrack.ts +64 -0
  32. package/src/combinator/effect/clock.ts +10 -0
  33. package/src/combinator/effect/precedence.ts +50 -0
  34. package/src/combinator/effect/recursion.ts +30 -0
  35. package/src/combinator/effect/scope.ts +100 -0
  36. package/src/combinator/effect/state.ts +72 -0
  37. package/src/combinator/{data/node.ts → parser/list.ts} +38 -13
  38. package/src/combinator/parser.ts +293 -0
  39. package/src/combinator/process/bind.ts +34 -0
  40. package/src/combinator/process/block.test.ts +20 -0
  41. package/src/combinator/process/block.ts +33 -0
  42. package/src/combinator/process/clear.ts +16 -0
  43. package/src/combinator/process/contract.ts +35 -0
  44. package/src/combinator/process/duplicate.ts +7 -0
  45. package/src/combinator/process/error.ts +13 -0
  46. package/src/combinator/{control/manipulation → process}/fallback.ts +3 -3
  47. package/src/combinator/process/fence.ts +59 -0
  48. package/src/combinator/process/fmap.ts +10 -0
  49. package/src/combinator/process/indent.test.ts +31 -0
  50. package/src/combinator/process/indent.ts +51 -0
  51. package/src/combinator/process/lazy.ts +8 -0
  52. package/src/combinator/process/line.test.ts +21 -0
  53. package/src/combinator/process/line.ts +55 -0
  54. package/src/combinator/process/match.ts +37 -0
  55. package/src/combinator/process/reverse.ts +7 -0
  56. package/src/combinator/process/scope.ts +102 -0
  57. package/src/combinator/process/surround.ts +271 -0
  58. package/src/combinator.ts +28 -24
  59. package/src/debug.test.ts +11 -8
  60. package/src/parser/autolink.test.ts +17 -18
  61. package/src/parser/block/blockquote.test.ts +78 -79
  62. package/src/parser/block/blockquote.ts +32 -25
  63. package/src/parser/block/codeblock.test.ts +56 -57
  64. package/src/parser/block/codeblock.ts +44 -26
  65. package/src/parser/block/dlist.test.ts +56 -57
  66. package/src/parser/block/dlist.ts +5 -5
  67. package/src/parser/block/extension/aside.test.ts +8 -9
  68. package/src/parser/block/extension/aside.ts +76 -47
  69. package/src/parser/block/extension/example.test.ts +18 -19
  70. package/src/parser/block/extension/example.ts +88 -48
  71. package/src/parser/block/extension/fig.test.ts +37 -36
  72. package/src/parser/block/extension/fig.ts +20 -25
  73. package/src/parser/block/extension/figbase.test.ts +18 -19
  74. package/src/parser/block/extension/figbase.ts +3 -3
  75. package/src/parser/block/extension/figure.test.ts +62 -63
  76. package/src/parser/block/extension/figure.ts +23 -21
  77. package/src/parser/block/extension/message.test.ts +13 -14
  78. package/src/parser/block/extension/message.ts +52 -39
  79. package/src/parser/block/extension/placeholder.test.ts +13 -13
  80. package/src/parser/block/extension/placeholder.ts +23 -21
  81. package/src/parser/block/extension/table.test.ts +70 -71
  82. package/src/parser/block/extension/table.ts +43 -31
  83. package/src/parser/block/extension.test.ts +24 -24
  84. package/src/parser/block/extension.ts +3 -3
  85. package/src/parser/block/heading.test.ts +58 -59
  86. package/src/parser/block/heading.ts +19 -18
  87. package/src/parser/block/ilist.test.ts +8 -8
  88. package/src/parser/block/ilist.ts +9 -7
  89. package/src/parser/block/mathblock.test.ts +31 -32
  90. package/src/parser/block/mathblock.ts +24 -23
  91. package/src/parser/block/mediablock.ts +7 -7
  92. package/src/parser/block/olist.test.ts +102 -103
  93. package/src/parser/block/olist.ts +11 -12
  94. package/src/parser/block/pagebreak.test.ts +15 -16
  95. package/src/parser/block/pagebreak.ts +5 -5
  96. package/src/parser/block/paragraph.test.ts +57 -58
  97. package/src/parser/block/paragraph.ts +1 -1
  98. package/src/parser/block/reply/cite.test.ts +39 -40
  99. package/src/parser/block/reply/cite.ts +5 -5
  100. package/src/parser/block/reply/quote.test.ts +50 -51
  101. package/src/parser/block/reply/quote.ts +8 -7
  102. package/src/parser/block/reply.test.ts +19 -20
  103. package/src/parser/block/reply.ts +2 -2
  104. package/src/parser/block/sidefence.test.ts +41 -48
  105. package/src/parser/block/sidefence.ts +17 -11
  106. package/src/parser/block/table.test.ts +48 -49
  107. package/src/parser/block/table.ts +10 -9
  108. package/src/parser/block/ulist.test.ts +52 -53
  109. package/src/parser/block/ulist.ts +9 -8
  110. package/src/parser/block.ts +63 -51
  111. package/src/parser/context.ts +35 -32
  112. package/src/parser/document.ts +48 -0
  113. package/src/parser/header.test.ts +19 -20
  114. package/src/parser/header.ts +31 -25
  115. package/src/parser/inline/annotation.test.ts +49 -50
  116. package/src/parser/inline/annotation.ts +14 -16
  117. package/src/parser/inline/autolink/account.test.ts +32 -33
  118. package/src/parser/inline/autolink/account.ts +18 -19
  119. package/src/parser/inline/autolink/anchor.test.ts +21 -22
  120. package/src/parser/inline/autolink/anchor.ts +7 -8
  121. package/src/parser/inline/autolink/channel.test.ts +14 -15
  122. package/src/parser/inline/autolink/email.test.ts +36 -37
  123. package/src/parser/inline/autolink/email.ts +6 -6
  124. package/src/parser/inline/autolink/hashnum.test.ts +32 -33
  125. package/src/parser/inline/autolink/hashnum.ts +7 -8
  126. package/src/parser/inline/autolink/hashtag.test.ts +59 -60
  127. package/src/parser/inline/autolink/hashtag.ts +8 -9
  128. package/src/parser/inline/autolink/url.test.ts +75 -76
  129. package/src/parser/inline/autolink/url.ts +13 -14
  130. package/src/parser/inline/autolink.ts +24 -11
  131. package/src/parser/inline/bracket.test.ts +73 -74
  132. package/src/parser/inline/bracket.ts +88 -63
  133. package/src/parser/inline/code.test.ts +30 -31
  134. package/src/parser/inline/code.ts +6 -6
  135. package/src/parser/inline/deletion.test.ts +27 -28
  136. package/src/parser/inline/deletion.ts +5 -5
  137. package/src/parser/inline/emphasis.test.ts +39 -40
  138. package/src/parser/inline/emphasis.ts +5 -5
  139. package/src/parser/inline/emstrong.test.ts +101 -102
  140. package/src/parser/inline/emstrong.ts +103 -85
  141. package/src/parser/inline/extension/index.test.ts +91 -92
  142. package/src/parser/inline/extension/index.ts +17 -13
  143. package/src/parser/inline/extension/indexee.ts +4 -4
  144. package/src/parser/inline/extension/indexer.test.ts +23 -24
  145. package/src/parser/inline/extension/indexer.ts +6 -5
  146. package/src/parser/inline/extension/label.test.ts +32 -33
  147. package/src/parser/inline/extension/label.ts +14 -5
  148. package/src/parser/inline/extension/placeholder.test.ts +42 -43
  149. package/src/parser/inline/extension/placeholder.ts +8 -9
  150. package/src/parser/inline/html.test.ts +109 -109
  151. package/src/parser/inline/html.ts +27 -27
  152. package/src/parser/inline/htmlentity.test.ts +37 -38
  153. package/src/parser/inline/htmlentity.ts +6 -7
  154. package/src/parser/inline/insertion.test.ts +27 -28
  155. package/src/parser/inline/insertion.ts +5 -5
  156. package/src/parser/inline/italic.test.ts +55 -56
  157. package/src/parser/inline/italic.ts +5 -5
  158. package/src/parser/inline/link.test.ts +186 -187
  159. package/src/parser/inline/link.ts +31 -32
  160. package/src/parser/inline/mark.test.ts +31 -32
  161. package/src/parser/inline/mark.ts +6 -6
  162. package/src/parser/inline/math.test.ts +140 -141
  163. package/src/parser/inline/math.ts +6 -7
  164. package/src/parser/inline/media.test.ts +92 -93
  165. package/src/parser/inline/media.ts +32 -38
  166. package/src/parser/inline/reference.test.ts +111 -112
  167. package/src/parser/inline/reference.ts +61 -32
  168. package/src/parser/inline/remark.test.ts +49 -50
  169. package/src/parser/inline/remark.ts +13 -13
  170. package/src/parser/inline/ruby.test.ts +49 -50
  171. package/src/parser/inline/ruby.ts +60 -49
  172. package/src/parser/inline/shortmedia.test.ts +9 -10
  173. package/src/parser/inline/shortmedia.ts +11 -9
  174. package/src/parser/inline/strong.test.ts +36 -37
  175. package/src/parser/inline/strong.ts +5 -5
  176. package/src/parser/inline/template.test.ts +22 -23
  177. package/src/parser/inline/template.ts +13 -16
  178. package/src/parser/inline.test.ts +225 -226
  179. package/src/parser/inline.ts +68 -34
  180. package/src/parser/node.ts +1 -1
  181. package/src/parser/parser.ts +51 -0
  182. package/src/parser/repeat.ts +118 -91
  183. package/src/parser/segment.test.ts +0 -11
  184. package/src/parser/segment.ts +25 -28
  185. package/src/parser/source/escapable.test.ts +23 -24
  186. package/src/parser/source/escapable.ts +20 -20
  187. package/src/parser/source/line.test.ts +17 -18
  188. package/src/parser/source/line.ts +19 -24
  189. package/src/parser/source/str.ts +17 -10
  190. package/src/parser/source/text.test.ts +88 -89
  191. package/src/parser/source/text.ts +19 -20
  192. package/src/parser/source/unescapable.test.ts +23 -24
  193. package/src/parser/source/unescapable.ts +16 -16
  194. package/src/parser/util.ts +1 -1
  195. package/src/parser/visibility.ts +36 -15
  196. package/src/{parser/processor → processor}/figure.test.ts +23 -23
  197. package/src/{parser/processor → processor}/figure.ts +20 -12
  198. package/src/{parser/processor → processor}/note.test.ts +15 -15
  199. package/src/{parser/processor → processor}/note.ts +6 -4
  200. package/src/renderer/render/media/pdf.ts +2 -2
  201. package/src/renderer/render/media/twitter.ts +2 -2
  202. package/src/renderer/render/media.test.ts +12 -13
  203. package/src/renderer/render.test.ts +11 -11
  204. package/src/util/info.test.ts +2 -2
  205. package/src/util/quote.test.ts +3 -3
  206. package/src/util/quote.ts +6 -5
  207. package/src/util/toc.test.ts +12 -12
  208. package/src/combinator/control/constraint/block.test.ts +0 -20
  209. package/src/combinator/control/constraint/block.ts +0 -28
  210. package/src/combinator/control/constraint/contract.ts +0 -27
  211. package/src/combinator/control/constraint/line.test.ts +0 -21
  212. package/src/combinator/control/constraint/line.ts +0 -42
  213. package/src/combinator/control/manipulation/clear.ts +0 -5
  214. package/src/combinator/control/manipulation/convert.ts +0 -22
  215. package/src/combinator/control/manipulation/duplicate.ts +0 -7
  216. package/src/combinator/control/manipulation/fence.ts +0 -54
  217. package/src/combinator/control/manipulation/indent.test.ts +0 -31
  218. package/src/combinator/control/manipulation/indent.ts +0 -39
  219. package/src/combinator/control/manipulation/lazy.ts +0 -8
  220. package/src/combinator/control/manipulation/match.ts +0 -27
  221. package/src/combinator/control/manipulation/recovery.ts +0 -18
  222. package/src/combinator/control/manipulation/reverse.ts +0 -8
  223. package/src/combinator/control/manipulation/scope.ts +0 -61
  224. package/src/combinator/control/manipulation/surround.ts +0 -223
  225. package/src/combinator/control/monad/bind.ts +0 -26
  226. package/src/combinator/control/monad/fmap.ts +0 -10
  227. package/src/combinator/data/parser/context.ts +0 -96
  228. package/src/combinator/data/parser/inits.ts +0 -20
  229. package/src/combinator/data/parser/sequence.test.ts +0 -33
  230. package/src/combinator/data/parser/sequence.ts +0 -20
  231. package/src/combinator/data/parser/some.test.ts +0 -37
  232. package/src/combinator/data/parser/subsequence.test.ts +0 -41
  233. package/src/combinator/data/parser/subsequence.ts +0 -13
  234. package/src/combinator/data/parser/tails.ts +0 -8
  235. package/src/combinator/data/parser/union.test.ts +0 -33
  236. package/src/combinator/data/parser/union.ts +0 -18
  237. package/src/combinator/data/parser.ts +0 -144
  238. package/src/parser/api/parse.ts +0 -48
  239. package/src/parser.ts +0 -1
  240. /package/src/{parser/api → api}/body.ts +0 -0
  241. /package/src/{parser/api → api}/normalize.ts +0 -0
@@ -1,7 +1,6 @@
1
1
  import { fig } from './fig';
2
2
  import { some } from '../../../combinator';
3
- import { input } from '../../../combinator/data/parser';
4
- import { Context } from '../../context';
3
+ import { input } from '../../context';
5
4
  import { inspect } from '../../../debug.test';
6
5
 
7
6
  describe('Unit: parser/block/extension/fig', () => {
@@ -9,43 +8,45 @@ describe('Unit: parser/block/extension/fig', () => {
9
8
  const parser = some(fig);
10
9
 
11
10
  it('invalid', () => {
12
- assert.deepStrictEqual(inspect(parser, input('\n!https://host\n', new Context())), undefined);
13
- assert.deepStrictEqual(inspect(parser, input('[$group-name]\nhttps://host', new Context())), undefined);
14
- assert.deepStrictEqual(inspect(parser, input('[$group-name]\nhttps://host\n', new Context())), undefined);
15
- assert.deepStrictEqual(inspect(parser, input('[$group-name]\n !https://host', new Context())), undefined);
16
- assert.deepStrictEqual(inspect(parser, input('[$group-name]\n\n!https://host', new Context())), undefined);
17
- assert.deepStrictEqual(inspect(parser, input('[$group-name]a\nhttps://host', new Context())), undefined);
18
- assert.deepStrictEqual(inspect(parser, input('[$group-name]a\n!https://host', new Context())), undefined);
19
- assert.deepStrictEqual(inspect(parser, input('[$group-name] a\nhttps://host', new Context())), undefined);
20
- assert.deepStrictEqual(inspect(parser, input('[$group-name] a\n!https://host', 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>'], '']);
21
- assert.deepStrictEqual(inspect(parser, input('$-a\n$-b', new Context())), undefined);
22
- assert.deepStrictEqual(inspect(parser, input(' [$group-name]\n!https://host\n', new Context())), undefined);
11
+ assert.deepStrictEqual(inspect(parser, input('\n!https://host\n')), undefined);
12
+ assert.deepStrictEqual(inspect(parser, input('[$group-name]\nhttps://host')), undefined);
13
+ assert.deepStrictEqual(inspect(parser, input('[$group-name]\nhttps://host\n')), undefined);
14
+ assert.deepStrictEqual(inspect(parser, input('[$group-name]\n !https://host')), undefined);
15
+ assert.deepStrictEqual(inspect(parser, input('[$group-name]\n\n!https://host')), undefined);
16
+ assert.deepStrictEqual(inspect(parser, input('[$group-name]a\nhttps://host')), undefined);
17
+ assert.deepStrictEqual(inspect(parser, input('[$group-name]a\n!https://host')), undefined);
18
+ assert.deepStrictEqual(inspect(parser, input('[$group-name] a\nhttps://host')), undefined);
19
+ assert.deepStrictEqual(inspect(parser, input('[$group-name] a\n!https://host')), [['<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>'], '']);
20
+ assert.deepStrictEqual(inspect(parser, input('$-a\n$-b')), undefined);
21
+ assert.deepStrictEqual(inspect(parser, input(' [$group-name]\n!https://host\n')), undefined);
23
22
  });
24
23
 
25
24
  it('valid', () => {
26
- assert.deepStrictEqual(inspect(parser, input('[$group-name]\n!https://host', 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>'], '']);
27
- 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>'], '']);
28
- assert.deepStrictEqual(inspect(parser, input('[$group-name]\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>'], '']);
29
- assert.deepStrictEqual(inspect(parser, input('[$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>'], '']);
30
- assert.deepStrictEqual(inspect(parser, input('[$group-name]\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>'], '']);
31
- assert.deepStrictEqual(inspect(parser, input('[$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>'], '']);
32
- assert.deepStrictEqual(inspect(parser, input('[$group-name]\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>'], '']);
33
- assert.deepStrictEqual(inspect(parser, input('[$group-name]\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>'], '']);
34
- assert.deepStrictEqual(inspect(parser, input('[$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>'], '']);
35
- assert.deepStrictEqual(inspect(parser, input('[$group-name]\n~~~\n~~~', new Context())), [['<figure data-type="example" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span><span class="figtext"></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>'], '']);
36
- assert.deepStrictEqual(inspect(parser, input('[$group-name]\n~~~\n~~~\n', new Context())), [['<figure data-type="example" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span><span class="figtext"></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>'], '']);
37
- assert.deepStrictEqual(inspect(parser, input('[$group-name]\n~~~example/markdown\n~~~', new Context())), [['<figure data-type="example" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span><span class="figtext"></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>'], '']);
38
- assert.deepStrictEqual(inspect(parser, input('[$group-name]\n~~~example/markdown\n~~~\n', new Context())), [['<figure data-type="example" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span><span class="figtext"></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>'], '']);
39
- assert.deepStrictEqual(inspect(parser, input('[$group-name]\n~~~table\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></table></div></figure>'], '']);
40
- assert.deepStrictEqual(inspect(parser, input('[$group-name]\n~~~table\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></table></div></figure>'], '']);
41
- assert.deepStrictEqual(inspect(parser, input('[$group-name]\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></blockquote></div></figure>'], '']);
42
- assert.deepStrictEqual(inspect(parser, input('[$group-name]\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></blockquote></div></figure>'], '']);
43
- assert.deepStrictEqual(inspect(parser, input('[$group-name]\n!> *a*', 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><section><p><em>a</em></p><h2>References</h2><ol class="references"></ol></section></blockquote></div></figure>'], '']);
44
- assert.deepStrictEqual(inspect(parser, input('[$group-name]\n![]{https://host}', 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('[$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>'], '']);
46
- assert.deepStrictEqual(inspect(parser, input('[$group-name]\n!https://host\ncaption', new Context())), [['<figure data-type="media" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span><span class="figtext">caption</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('[$group-name]\n!https://host\ncaption\n', new Context())), [['<figure data-type="media" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span><span class="figtext">caption</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('$group-name\n!https://host', 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>'], '']);
25
+ assert.deepStrictEqual(inspect(parser, input('[$group-name]\n!https://host')), [['<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>'], '']);
26
+ assert.deepStrictEqual(inspect(parser, input('[$group-name]\n!https://host\n')), [['<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>'], '']);
27
+ assert.deepStrictEqual(inspect(parser, input('[$group-name]\n|\n|-\n|')), [['<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>'], '']);
28
+ assert.deepStrictEqual(inspect(parser, input('[$group-name]\n|\n|-\n|\n')), [['<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>'], '']);
29
+ assert.deepStrictEqual(inspect(parser, input('[$group-name]\n```\n\n```')), [['<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>'], '']);
30
+ assert.deepStrictEqual(inspect(parser, input('[$group-name]\n```\n\n```\n')), [['<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>'], '']);
31
+ assert.deepStrictEqual(inspect(parser, input('[$group-name]\n```\n~~~\n```')), [['<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>'], '']);
32
+ assert.deepStrictEqual(inspect(parser, input('[$group-name]\n$$\n\n$$')), [['<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>'], '']);
33
+ assert.deepStrictEqual(inspect(parser, input('[$group-name]\n$$\n\n$$\n')), [['<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>'], '']);
34
+ assert.deepStrictEqual(inspect(parser, input('[$group-name]\n~~~\n~~~')), [['<figure data-type="example" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span><span class="figtext"></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>'], '']);
35
+ assert.deepStrictEqual(inspect(parser, input('[$group-name]\n~~~\n~~~\n')), [['<figure data-type="example" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span><span class="figtext"></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>'], '']);
36
+ assert.deepStrictEqual(inspect(parser, input('[$group-name]\n~~~example/markdown\n~~~')), [['<figure data-type="example" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span><span class="figtext"></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>'], '']);
37
+ assert.deepStrictEqual(inspect(parser, input('[$group-name]\n~~~example/markdown\n~~~\n')), [['<figure data-type="example" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span><span class="figtext"></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>'], '']);
38
+ assert.deepStrictEqual(inspect(parser, input('[$group-name]\n~~~table\n~~~')), [['<figure data-type="table" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span><span class="figtext"></span></figcaption><div><table></table></div></figure>'], '']);
39
+ assert.deepStrictEqual(inspect(parser, input('[$group-name]\n~~~table\n~~~\n')), [['<figure data-type="table" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span><span class="figtext"></span></figcaption><div><table></table></div></figure>'], '']);
40
+ assert.deepStrictEqual(inspect(parser, input('[$group-name]\n> ')), [['<figure data-type="quote" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span><span class="figtext"></span></figcaption><div><blockquote></blockquote></div></figure>'], '']);
41
+ assert.deepStrictEqual(inspect(parser, input('[$group-name]\n> \n')), [['<figure data-type="quote" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span><span class="figtext"></span></figcaption><div><blockquote></blockquote></div></figure>'], '']);
42
+ assert.deepStrictEqual(inspect(parser, input('[$group-name]\n!> *a*')), [['<figure data-type="quote" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span><span class="figtext"></span></figcaption><div><blockquote><section><p><em>a</em></p><h2>References</h2><ol class="references"></ol></section></blockquote></div></figure>'], '']);
43
+ assert.deepStrictEqual(inspect(parser, input('[$group-name]\n![]{https://host}')), [['<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('[$group-name]\n![]{https://host}\n')), [['<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('[$group-name]\n!https://host\ncaption')), [['<figure data-type="media" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span><span class="figtext">caption</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('[$group-name]\n!https://host\ncaption\n')), [['<figure data-type="media" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span><span class="figtext">caption</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('[$group-name]\n!{https://host}\ncaption')), [['<figure data-type="media" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span><span class="figtext">caption</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('[$group-name]\n![]{https://host}\ncaption')), [['<figure data-type="media" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span><span class="figtext">caption</span></figcaption><div><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt="https://host"></a></div></figure>'], '']);
49
+ assert.deepStrictEqual(inspect(parser, input('$group-name\n!https://host')), [['<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>'], '']);
49
50
  });
50
51
 
51
52
  });
@@ -1,6 +1,7 @@
1
1
  import { ExtensionParser } from '../../block';
2
2
  import { Segment } from '../../context';
3
- import { union, sequence, some, block, line, verify, rewrite, close, convert } from '../../../combinator';
3
+ import { Result } from '../../../combinator/parser';
4
+ import { union, sequence, some, always, backtrack, block, line, rewrite, close } from '../../../combinator';
4
5
  import { contentline } from '../../source';
5
6
  import { figure } from './figure';
6
7
  import { segment as seg_label } from '../../inline/extension/label';
@@ -9,13 +10,12 @@ import { segment as seg_math } from '../mathblock';
9
10
  import { segment as seg_table } from './table';
10
11
  import { segment as seg_blockquote } from '../blockquote';
11
12
  import { segment as seg_placeholder } from './placeholder';
12
- import { media, lineshortmedia } from '../../inline';
13
13
 
14
14
  import FigParser = ExtensionParser.FigParser;
15
15
 
16
- export const segment: FigParser.SegmentParser = block(
16
+ export const segment: FigParser.SegmentParser = backtrack(block(
17
17
  sequence([
18
- line(close(seg_label, /(?!\S)[^\r\n]*\r?\n/y)),
18
+ line(close(seg_label, /(?!\S)[^\r\n]*\r?\n/y), false),
19
19
  union([
20
20
  seg_code,
21
21
  seg_math,
@@ -24,29 +24,24 @@ export const segment: FigParser.SegmentParser = block(
24
24
  seg_placeholder,
25
25
  some(contentline),
26
26
  ]),
27
- ]), true, Segment.fig);
27
+ ]), true, Segment.fig));
28
28
 
29
- export const fig: FigParser = block(rewrite(segment, verify(convert(
30
- (source, context) => {
29
+ export const fig: FigParser = block(rewrite(segment, always([
30
+ (input, output) => {
31
+ const { source } = input;
31
32
  // Bug: TypeScript
32
33
  const fence = (/^[^\r\n]*\r?\n!?>+ /.test(source) && source.match(/^~{3,}(?=[^\S\r\n]*$)/gm) as string[] || [])
33
34
  .reduce((max, fence) => fence > max ? fence : max, '~~') + '~';
34
- const { position } = context;
35
- const result = parser(context);
36
- context.position = position;
37
- context.segment = Segment.figure | Segment.write;
38
- return result
39
- ? `${fence}figure ${source.replace(/^([^\r\n]+\r?\n[^\r\n]+\r?\n)(.+?)\r?\n?$/s, '$1\n$2')}\n${fence}`
40
- : `${fence}figure ${source}\n\n${fence}`;
35
+ const src = `${fence}figure ${source.replace(/^([^\r\n]+\r?\n![[{0-9a-z][^\r\n]+\r?\n)(.+?)\r?\n?$/s, '$1\n$2')}\n${fence}`;
36
+ input = input.scope.push(src);
37
+ input.segment = Segment.figure | Segment.write;
38
+ return output.context;
41
39
  },
42
- union([figure])),
43
- ([{ value: el }]) => el.tagName === 'FIGURE')));
44
-
45
- const parser = sequence([
46
- line(close(seg_label, /(?!\S)[^\r\n]*\r?\n/y)),
47
- line(union([
48
- media,
49
- lineshortmedia,
50
- ])),
51
- some(contentline),
52
- ]);
40
+ union([figure]),
41
+ (input, output) => {
42
+ input.scope.pop();
43
+ return output.peek().last!.value.tagName === 'FIGURE'
44
+ ? output.context
45
+ : Result.fail;
46
+ },
47
+ ])));
@@ -1,7 +1,6 @@
1
1
  import { figbase } from './figbase';
2
2
  import { some } from '../../../combinator';
3
- import { input } from '../../../combinator/data/parser';
4
- import { Context } from '../../context';
3
+ import { input } from '../../context';
5
4
  import { inspect } from '../../../debug.test';
6
5
 
7
6
  describe('Unit: parser/block/extension/figbase', () => {
@@ -9,26 +8,26 @@ describe('Unit: parser/block/extension/figbase', () => {
9
8
  const parser = some(figbase);
10
9
 
11
10
  it('invalid', () => {
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 0', new Context())), undefined);
17
- assert.deepStrictEqual(inspect(parser, input('$-0\n 0', new Context())), undefined);
18
- assert.deepStrictEqual(inspect(parser, input('$-name', new Context())), undefined);
19
- assert.deepStrictEqual(inspect(parser, input('$-name-0', new Context())), undefined);
20
- assert.deepStrictEqual(inspect(parser, input('$group-0', new Context())), undefined);
21
- assert.deepStrictEqual(inspect(parser, input('$-0]', new Context())), undefined);
22
- assert.deepStrictEqual(inspect(parser, input('[$-0', new Context())), undefined);
23
- assert.deepStrictEqual(inspect(parser, input(' [$-0]', new Context())), undefined);
11
+ assert.deepStrictEqual(inspect(parser, input('\n$-0')), undefined);
12
+ assert.deepStrictEqual(inspect(parser, input('$-0.')), undefined);
13
+ assert.deepStrictEqual(inspect(parser, input('$-0.1')), undefined);
14
+ assert.deepStrictEqual(inspect(parser, input('$-1')), undefined);
15
+ assert.deepStrictEqual(inspect(parser, input('$-0 0')), undefined);
16
+ assert.deepStrictEqual(inspect(parser, input('$-0\n 0')), undefined);
17
+ assert.deepStrictEqual(inspect(parser, input('$-name')), undefined);
18
+ assert.deepStrictEqual(inspect(parser, input('$-name-0')), undefined);
19
+ assert.deepStrictEqual(inspect(parser, input('$group-0')), undefined);
20
+ assert.deepStrictEqual(inspect(parser, input('$-0]')), undefined);
21
+ assert.deepStrictEqual(inspect(parser, input('[$-0')), undefined);
22
+ assert.deepStrictEqual(inspect(parser, input(' [$-0]')), undefined);
24
23
  });
25
24
 
26
25
  it('valid', () => {
27
- assert.deepStrictEqual(inspect(parser, input('$-0', new Context())), [['<figure data-label="$-0" data-group="$" hidden=""></figure>'], '']);
28
- assert.deepStrictEqual(inspect(parser, input('$-0.0', new Context())), [['<figure data-label="$-0.0" data-group="$" hidden=""></figure>'], '']);
29
- assert.deepStrictEqual(inspect(parser, input('$-1.0', new Context())), [['<figure data-label="$-1.0" data-group="$" hidden=""></figure>'], '']);
30
- assert.deepStrictEqual(inspect(parser, input('$-0\n \n', new Context())), [['<figure data-label="$-0" data-group="$" hidden=""></figure>'], ' \n']);
31
- assert.deepStrictEqual(inspect(parser, input('[$-0]', new Context())), [['<figure data-label="$-0" data-group="$" hidden=""></figure>'], '']);
26
+ assert.deepStrictEqual(inspect(parser, input('$-0')), [['<figure data-label="$-0" data-group="$" hidden=""></figure>'], '']);
27
+ assert.deepStrictEqual(inspect(parser, input('$-0.0')), [['<figure data-label="$-0.0" data-group="$" hidden=""></figure>'], '']);
28
+ assert.deepStrictEqual(inspect(parser, input('$-1.0')), [['<figure data-label="$-1.0" data-group="$" hidden=""></figure>'], '']);
29
+ assert.deepStrictEqual(inspect(parser, input('$-0\n \n')), [['<figure data-label="$-0" data-group="$" hidden=""></figure>'], ' \n']);
30
+ assert.deepStrictEqual(inspect(parser, input('[$-0]')), [['<figure data-label="$-0" data-group="$" hidden=""></figure>'], '']);
32
31
  });
33
32
 
34
33
  });
@@ -1,12 +1,12 @@
1
1
  import { ExtensionParser } from '../../block';
2
- import { List, Node } from '../../../combinator/data/parser';
3
- import { union, block, line, validate, fmap } from '../../../combinator';
2
+ import { List, Node } from '../../../combinator/parser';
3
+ import { block, line, validate, fmap } from '../../../combinator';
4
4
  import { label } from '../../inline/extension/label';
5
5
  import { html } from 'typed-dom/dom';
6
6
 
7
7
  export const figbase: ExtensionParser.FigbaseParser = block(fmap(
8
8
  validate(/\[?\$-(?:[0-9]+\.)*0\]?[^\S\r\n]*(?:$|\r?\n)/y,
9
- line(union([label]))),
9
+ line(label, false)),
10
10
  ([{ value: el }]) => {
11
11
  const label = el.getAttribute('data-label')!;
12
12
  const group = label.split('-', 1)[0];
@@ -1,7 +1,6 @@
1
1
  import { figure } from './figure';
2
2
  import { some } from '../../../combinator';
3
- import { input } from '../../../combinator/data/parser';
4
- import { Context } from '../../context';
3
+ import { input } from '../../context';
5
4
  import { inspect } from '../../../debug.test';
6
5
 
7
6
  describe('Unit: parser/block/extension/figure', () => {
@@ -9,70 +8,70 @@ describe('Unit: parser/block/extension/figure', () => {
9
8
  const parser = some(figure);
10
9
 
11
10
  it('invalid', () => {
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~~~`]);
11
+ assert.deepStrictEqual(inspect(parser, input('~~~figure\n!https://host\n~~~')), [['<pre class="invalid" translate="no">~~~figure\n!https://host\n~~~</pre>'], '']);
12
+ assert.deepStrictEqual(inspect(parser, input('~~~figure $group-name]\n!https://host\n~~~')), [['<pre class="invalid" translate="no">~~~figure $group-name]\n!https://host\n~~~</pre>'], '']);
13
+ assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name\n!https://host\n~~~')), [['<pre class="invalid" translate="no">~~~figure [$group-name\n!https://host\n~~~</pre>'], '']);
14
+ assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\nhttps://host\n~~~')), [['<pre class="invalid" translate="no">~~~figure [$group-name]\nhttps://host\n~~~</pre>'], '']);
15
+ assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\n!https://host\n\\\n~~~')), [['<pre class="invalid" translate="no">~~~figure [$group-name]\n!https://host\n\\\n~~~</pre>'], '']);
16
+ assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\n!https://host\na\n~~~')), [['<pre class="invalid" translate="no">~~~figure [$group-name]\n!https://host\na\n~~~</pre>'], '']);
17
+ assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\n!https://host\n\n\n\n~~~')), [['<pre class="invalid" translate="no">~~~figure [$group-name]\n!https://host\n\n\n\n~~~</pre>'], '']);
18
+ assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\n !https://host\n~~~')), [['<pre class="invalid" translate="no">~~~figure [$group-name]\n !https://host\n~~~</pre>'], '']);
19
+ assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\n!https://host\n~~~\n~~~')), [['<pre class="invalid" translate="no">~~~figure [$group-name]\n!https://host\n~~~\n~~~</pre>'], '']);
20
+ assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\n!https://host\n\ncaption\n~~~\n~~~')), [['<pre class="invalid" translate="no">~~~figure [$group-name]\n!https://host\n\ncaption\n~~~\n~~~</pre>'], '']);
21
+ assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\n!https://host\n~~~~')), [['<pre class="invalid" translate="no">~~~figure [$group-name]\n!https://host\n~~~~</pre>'], '']);
22
+ assert.deepStrictEqual(inspect(parser, input('~~~~figure [$group-name]\n!https://host\n~~~')), [['<pre class="invalid" translate="no">~~~~figure [$group-name]\n!https://host\n~~~</pre>'], '']);
23
+ assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]a\nhttps://host\n~~~')), [['<pre class="invalid" translate="no">~~~figure [$group-name]a\nhttps://host\n~~~</pre>'], '']);
24
+ assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]a\n!https://host\n~~~')), [['<pre class="invalid" translate="no">~~~figure [$group-name]a\n!https://host\n~~~</pre>'], '']);
25
+ assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name] a\nhttps://host\n~~~')), [['<pre class="invalid" translate="no">~~~figure [$group-name] a\nhttps://host\n~~~</pre>'], '']);
26
+ assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name] a\n!https://host\n~~~')), [['<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>'], '']);
27
+ assert.deepStrictEqual(inspect(parser, input('~~~figure a[$group-name]\n!https://host\n~~~')), [['<pre class="invalid" translate="no">~~~figure a[$group-name]\n!https://host\n~~~</pre>'], '']);
28
+ assert.deepStrictEqual(inspect(parser, input('~~~figure a [$group-name]\n!https://host\n~~~')), [['<pre class="invalid" translate="no">~~~figure a [$group-name]\n!https://host\n~~~</pre>'], '']);
29
+ assert.deepStrictEqual(inspect(parser, input('~~~ [$group-name]\n!https://host\n~~~')), undefined);
30
+ assert.deepStrictEqual(inspect(parser, input('~~~ $group-name\n!https://host\n~~~')), undefined);
31
+ assert.deepStrictEqual(inspect(parser, input(' ~~~figure [$group-name]\n!https://host\n~~~')), undefined);
32
+ assert.deepStrictEqual(inspect(parser, input('~~~figure [$-name]\n!https://host\n~~~')), [['<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>'], '']);
33
+ assert.deepStrictEqual(inspect(parser, input('~~~figure [$fig-name]\n> \n\n~~~')), [['<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>'], '']);
34
+ assert.deepStrictEqual(inspect(parser, input('~~~figure [$figure-name]\n> \n\n~~~')), [['<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>'], '']);
35
+ assert.deepStrictEqual(inspect(parser, input('~~~figure [$table-name]\n> \n\n~~~')), [['<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>'], '']);
36
+ assert.deepStrictEqual(inspect(parser, input(`~~~figure [$group-name]\n0${'\n'.repeat(301)}~~~`), '>'), [['<pre class="invalid" translate="no">'], '']);
37
+ assert.deepStrictEqual(inspect(parser, input(`~~~figure [$group-name]\n~~~\n0${'\n'.repeat(301)}~~~\n~~~`), '>'), [['<pre class="invalid" translate="no">'], `${'\n'.repeat(300)}~~~\n~~~`]);
39
38
  });
40
39
 
41
40
  it('valid', () => {
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">'], '']);
41
+ assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\n!https://host\n~~~')), [['<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>'], '']);
42
+ assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\n!https://host\n~~~\n')), [['<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~~~')), [['<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\n~~~')), [['<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~~~')), [['<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!https://caption\n~~~')), [['<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>'], '']);
47
+ assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\n- a\n~~~')), [['<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>'], '']);
48
+ assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\n1. a\n~~~')), [['<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>'], '']);
49
+ assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\n|\n|-\n|\n~~~')), [['<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>'], '']);
50
+ assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\n```\n\n```\n~~~')), [['<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>'], '']);
51
+ assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\n```\n~~~\n```\n\n~~~')), [['<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\ncaption\n~~~')), [['<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>'], '']);
53
+ assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\n$$\n\n$$\n~~~')), [['<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>'], '']);
54
+ assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\n$$\n~~~\n$$\n~~~')), [['<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\ncaption\n~~~')), [['<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>'], '']);
56
+ assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\n~~~\n~~~\n\ncaption\n~~~')), [['<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>'], '']);
57
+ assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\n~~~example/markdown\n~~~\n\ncaption\n~~~')), [['<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~~~table\n~~~\n\ncaption\n~~~')), [['<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>'], '']);
59
+ assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\n> \n~~~\n\n~~~')), [['<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>'], '']);
60
+ assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\n> \n~~~\n\ncaption\n~~~')), [['<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>'], '']);
61
+ assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\n!https://host\\\n~~~')), [['<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>'], '']);
62
+ assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\n![]{https://host}\n~~~')), [['<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~~~~')), [['<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~~~')), [['<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('~~~[$group-name]\n!https://host\n~~~')), [['<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~~~')), [['<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('~~~figure [$group-0]\n> \n\n~~~')), [['<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>'], '']);
68
+ assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-0.0]\n> \n\n~~~')), [['<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>'], '']);
69
+ assert.deepStrictEqual(inspect(parser, input('~~~figure [$-0]\n$$\n\n$$\n~~~')), [['<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>'], '']);
70
+ assert.deepStrictEqual(inspect(parser, input('~~~figure [$-0.0]\n$$\n\n$$\n~~~')), [['<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>'], '']);
71
+ assert.deepStrictEqual(inspect(parser, input('~~~figure [$-name]\n!https://host\n~~~')), [['<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>'], '']);
72
+ assert.deepStrictEqual(inspect(parser, input('~~~figure [$-name]\n$$\n\n$$\n\ncaption\n~~~')), [['<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>'], '']);
73
+ assert.deepStrictEqual(inspect(parser, input(`~~~figure [$group-name]\n${'> \n'.repeat(500)}\n~~~`), '>'), [['<figure data-type="quote" data-label="group-name" data-group="group">'], '']);
74
+ assert.deepStrictEqual(inspect(parser, input(`~~~figure [$group-name]\n~~~\n0${'\n'.repeat(300)}~~~\n~~~`), '>'), [['<figure data-type="example" data-label="group-name" data-group="group">'], '']);
76
75
  });
77
76
 
78
77
  });