securemark 0.299.4 → 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 (231) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/design.md +0 -6
  3. package/dist/index.js +2749 -1979
  4. package/index.d.ts +2 -1
  5. package/markdown.d.ts +209 -183
  6. package/package.json +1 -1
  7. package/src/api/bind.test.ts +0 -22
  8. package/src/api/bind.ts +15 -10
  9. package/src/api/header.ts +8 -5
  10. package/src/api/parse.test.ts +118 -122
  11. package/src/api/parse.ts +13 -31
  12. package/src/api/run.ts +6 -0
  13. package/src/api.ts +1 -0
  14. package/src/combinator/control/inits.ts +26 -0
  15. package/src/combinator/control/sequence.test.ts +38 -0
  16. package/src/combinator/control/sequence.ts +17 -0
  17. package/src/combinator/control/some.test.ts +41 -0
  18. package/src/combinator/{data/parser → control}/some.ts +39 -26
  19. package/src/combinator/control/state.ts +42 -0
  20. package/src/combinator/control/subsequence.test.ts +47 -0
  21. package/src/combinator/control/subsequence.ts +16 -0
  22. package/src/combinator/control/tails.ts +8 -0
  23. package/src/combinator/control/union.test.ts +37 -0
  24. package/src/combinator/control/union.ts +18 -0
  25. package/src/combinator/{data/delimiter.ts → delimiter.ts} +40 -60
  26. package/src/combinator/effect/backtrack.ts +64 -0
  27. package/src/combinator/effect/clock.ts +10 -0
  28. package/src/combinator/effect/precedence.ts +50 -0
  29. package/src/combinator/effect/recursion.ts +30 -0
  30. package/src/combinator/effect/scope.ts +100 -0
  31. package/src/combinator/effect/state.ts +72 -0
  32. package/src/combinator/{data/list → parser}/list.ts +35 -10
  33. package/src/combinator/parser.ts +293 -0
  34. package/src/combinator/process/bind.ts +34 -0
  35. package/src/combinator/process/block.test.ts +20 -0
  36. package/src/combinator/process/block.ts +33 -0
  37. package/src/combinator/process/clear.ts +16 -0
  38. package/src/combinator/process/contract.ts +35 -0
  39. package/src/combinator/process/duplicate.ts +7 -0
  40. package/src/combinator/process/error.ts +13 -0
  41. package/src/combinator/{control/manipulation → process}/fallback.ts +3 -3
  42. package/src/combinator/process/fence.ts +59 -0
  43. package/src/combinator/process/fmap.ts +10 -0
  44. package/src/combinator/process/indent.test.ts +31 -0
  45. package/src/combinator/process/indent.ts +51 -0
  46. package/src/combinator/process/lazy.ts +8 -0
  47. package/src/combinator/process/line.test.ts +21 -0
  48. package/src/combinator/process/line.ts +55 -0
  49. package/src/combinator/process/match.ts +37 -0
  50. package/src/combinator/process/reverse.ts +7 -0
  51. package/src/combinator/process/scope.ts +102 -0
  52. package/src/combinator/process/surround.ts +271 -0
  53. package/src/combinator.ts +28 -24
  54. package/src/debug.test.ts +11 -8
  55. package/src/parser/autolink.test.ts +17 -18
  56. package/src/parser/block/blockquote.test.ts +78 -79
  57. package/src/parser/block/blockquote.ts +32 -25
  58. package/src/parser/block/codeblock.test.ts +56 -57
  59. package/src/parser/block/codeblock.ts +44 -26
  60. package/src/parser/block/dlist.test.ts +56 -57
  61. package/src/parser/block/dlist.ts +5 -5
  62. package/src/parser/block/extension/aside.test.ts +8 -9
  63. package/src/parser/block/extension/aside.ts +76 -47
  64. package/src/parser/block/extension/example.test.ts +18 -19
  65. package/src/parser/block/extension/example.ts +88 -48
  66. package/src/parser/block/extension/fig.test.ts +37 -36
  67. package/src/parser/block/extension/fig.ts +20 -25
  68. package/src/parser/block/extension/figbase.test.ts +18 -19
  69. package/src/parser/block/extension/figbase.ts +3 -3
  70. package/src/parser/block/extension/figure.test.ts +62 -63
  71. package/src/parser/block/extension/figure.ts +23 -21
  72. package/src/parser/block/extension/message.test.ts +13 -14
  73. package/src/parser/block/extension/message.ts +52 -39
  74. package/src/parser/block/extension/placeholder.test.ts +13 -13
  75. package/src/parser/block/extension/placeholder.ts +23 -21
  76. package/src/parser/block/extension/table.test.ts +70 -71
  77. package/src/parser/block/extension/table.ts +43 -31
  78. package/src/parser/block/extension.test.ts +24 -24
  79. package/src/parser/block/extension.ts +3 -3
  80. package/src/parser/block/heading.test.ts +58 -59
  81. package/src/parser/block/heading.ts +19 -18
  82. package/src/parser/block/ilist.test.ts +8 -8
  83. package/src/parser/block/ilist.ts +9 -7
  84. package/src/parser/block/mathblock.test.ts +31 -32
  85. package/src/parser/block/mathblock.ts +24 -23
  86. package/src/parser/block/mediablock.ts +7 -7
  87. package/src/parser/block/olist.test.ts +102 -103
  88. package/src/parser/block/olist.ts +11 -12
  89. package/src/parser/block/pagebreak.test.ts +15 -16
  90. package/src/parser/block/pagebreak.ts +5 -5
  91. package/src/parser/block/paragraph.test.ts +57 -58
  92. package/src/parser/block/paragraph.ts +1 -1
  93. package/src/parser/block/reply/cite.test.ts +39 -40
  94. package/src/parser/block/reply/cite.ts +5 -5
  95. package/src/parser/block/reply/quote.test.ts +50 -51
  96. package/src/parser/block/reply/quote.ts +8 -7
  97. package/src/parser/block/reply.test.ts +19 -20
  98. package/src/parser/block/reply.ts +2 -2
  99. package/src/parser/block/sidefence.test.ts +41 -48
  100. package/src/parser/block/sidefence.ts +17 -11
  101. package/src/parser/block/table.test.ts +48 -49
  102. package/src/parser/block/table.ts +10 -9
  103. package/src/parser/block/ulist.test.ts +52 -53
  104. package/src/parser/block/ulist.ts +9 -8
  105. package/src/parser/block.ts +63 -51
  106. package/src/parser/context.ts +35 -32
  107. package/src/parser/document.ts +48 -0
  108. package/src/parser/header.test.ts +19 -20
  109. package/src/parser/header.ts +31 -25
  110. package/src/parser/inline/annotation.test.ts +49 -50
  111. package/src/parser/inline/annotation.ts +14 -16
  112. package/src/parser/inline/autolink/account.test.ts +32 -33
  113. package/src/parser/inline/autolink/account.ts +18 -19
  114. package/src/parser/inline/autolink/anchor.test.ts +21 -22
  115. package/src/parser/inline/autolink/anchor.ts +7 -8
  116. package/src/parser/inline/autolink/channel.test.ts +14 -15
  117. package/src/parser/inline/autolink/email.test.ts +36 -37
  118. package/src/parser/inline/autolink/email.ts +6 -6
  119. package/src/parser/inline/autolink/hashnum.test.ts +32 -33
  120. package/src/parser/inline/autolink/hashnum.ts +7 -8
  121. package/src/parser/inline/autolink/hashtag.test.ts +59 -60
  122. package/src/parser/inline/autolink/hashtag.ts +8 -9
  123. package/src/parser/inline/autolink/url.test.ts +75 -76
  124. package/src/parser/inline/autolink/url.ts +13 -14
  125. package/src/parser/inline/autolink.ts +24 -11
  126. package/src/parser/inline/bracket.test.ts +73 -74
  127. package/src/parser/inline/bracket.ts +88 -63
  128. package/src/parser/inline/code.test.ts +30 -31
  129. package/src/parser/inline/code.ts +6 -6
  130. package/src/parser/inline/deletion.test.ts +27 -28
  131. package/src/parser/inline/deletion.ts +5 -5
  132. package/src/parser/inline/emphasis.test.ts +39 -40
  133. package/src/parser/inline/emphasis.ts +5 -5
  134. package/src/parser/inline/emstrong.test.ts +101 -102
  135. package/src/parser/inline/emstrong.ts +103 -85
  136. package/src/parser/inline/extension/index.test.ts +91 -92
  137. package/src/parser/inline/extension/index.ts +17 -13
  138. package/src/parser/inline/extension/indexee.ts +4 -4
  139. package/src/parser/inline/extension/indexer.test.ts +23 -24
  140. package/src/parser/inline/extension/indexer.ts +6 -5
  141. package/src/parser/inline/extension/label.test.ts +32 -33
  142. package/src/parser/inline/extension/label.ts +14 -5
  143. package/src/parser/inline/extension/placeholder.test.ts +42 -43
  144. package/src/parser/inline/extension/placeholder.ts +8 -9
  145. package/src/parser/inline/html.test.ts +109 -109
  146. package/src/parser/inline/html.ts +27 -27
  147. package/src/parser/inline/htmlentity.test.ts +37 -38
  148. package/src/parser/inline/htmlentity.ts +6 -7
  149. package/src/parser/inline/insertion.test.ts +27 -28
  150. package/src/parser/inline/insertion.ts +5 -5
  151. package/src/parser/inline/italic.test.ts +55 -56
  152. package/src/parser/inline/italic.ts +5 -5
  153. package/src/parser/inline/link.test.ts +186 -187
  154. package/src/parser/inline/link.ts +29 -30
  155. package/src/parser/inline/mark.test.ts +31 -32
  156. package/src/parser/inline/mark.ts +6 -6
  157. package/src/parser/inline/math.test.ts +140 -141
  158. package/src/parser/inline/math.ts +6 -7
  159. package/src/parser/inline/media.test.ts +92 -93
  160. package/src/parser/inline/media.ts +31 -37
  161. package/src/parser/inline/reference.test.ts +111 -112
  162. package/src/parser/inline/reference.ts +61 -32
  163. package/src/parser/inline/remark.test.ts +49 -50
  164. package/src/parser/inline/remark.ts +13 -13
  165. package/src/parser/inline/ruby.test.ts +49 -50
  166. package/src/parser/inline/ruby.ts +60 -49
  167. package/src/parser/inline/shortmedia.test.ts +9 -10
  168. package/src/parser/inline/shortmedia.ts +11 -9
  169. package/src/parser/inline/strong.test.ts +36 -37
  170. package/src/parser/inline/strong.ts +5 -5
  171. package/src/parser/inline/template.test.ts +22 -23
  172. package/src/parser/inline/template.ts +13 -16
  173. package/src/parser/inline.test.ts +225 -226
  174. package/src/parser/inline.ts +68 -34
  175. package/src/parser/parser.ts +51 -0
  176. package/src/parser/repeat.ts +118 -91
  177. package/src/parser/segment.test.ts +0 -11
  178. package/src/parser/segment.ts +25 -28
  179. package/src/parser/source/escapable.test.ts +23 -24
  180. package/src/parser/source/escapable.ts +20 -20
  181. package/src/parser/source/line.test.ts +17 -18
  182. package/src/parser/source/line.ts +19 -24
  183. package/src/parser/source/str.ts +17 -10
  184. package/src/parser/source/text.test.ts +88 -89
  185. package/src/parser/source/text.ts +19 -20
  186. package/src/parser/source/unescapable.test.ts +23 -24
  187. package/src/parser/source/unescapable.ts +16 -16
  188. package/src/parser/util.ts +1 -1
  189. package/src/parser/visibility.ts +35 -14
  190. package/src/processor/figure.test.ts +20 -20
  191. package/src/processor/figure.ts +18 -10
  192. package/src/processor/note.test.ts +13 -13
  193. package/src/processor/note.ts +4 -2
  194. package/src/renderer/render/media/pdf.ts +2 -2
  195. package/src/renderer/render/media/twitter.ts +2 -2
  196. package/src/renderer/render/media.test.ts +12 -12
  197. package/src/renderer/render.test.ts +11 -11
  198. package/src/util/info.test.ts +2 -2
  199. package/src/util/quote.test.ts +3 -3
  200. package/src/util/quote.ts +6 -5
  201. package/src/util/toc.test.ts +12 -12
  202. package/src/combinator/control/constraint/block.test.ts +0 -20
  203. package/src/combinator/control/constraint/block.ts +0 -28
  204. package/src/combinator/control/constraint/contract.ts +0 -27
  205. package/src/combinator/control/constraint/line.test.ts +0 -21
  206. package/src/combinator/control/constraint/line.ts +0 -42
  207. package/src/combinator/control/manipulation/clear.ts +0 -5
  208. package/src/combinator/control/manipulation/convert.ts +0 -22
  209. package/src/combinator/control/manipulation/duplicate.ts +0 -7
  210. package/src/combinator/control/manipulation/fence.ts +0 -54
  211. package/src/combinator/control/manipulation/indent.test.ts +0 -31
  212. package/src/combinator/control/manipulation/indent.ts +0 -39
  213. package/src/combinator/control/manipulation/lazy.ts +0 -8
  214. package/src/combinator/control/manipulation/match.ts +0 -27
  215. package/src/combinator/control/manipulation/recovery.ts +0 -18
  216. package/src/combinator/control/manipulation/reverse.ts +0 -8
  217. package/src/combinator/control/manipulation/scope.ts +0 -61
  218. package/src/combinator/control/manipulation/surround.ts +0 -223
  219. package/src/combinator/control/monad/bind.ts +0 -26
  220. package/src/combinator/control/monad/fmap.ts +0 -10
  221. package/src/combinator/data/parser/context.ts +0 -96
  222. package/src/combinator/data/parser/inits.ts +0 -20
  223. package/src/combinator/data/parser/sequence.test.ts +0 -33
  224. package/src/combinator/data/parser/sequence.ts +0 -20
  225. package/src/combinator/data/parser/some.test.ts +0 -37
  226. package/src/combinator/data/parser/subsequence.test.ts +0 -41
  227. package/src/combinator/data/parser/subsequence.ts +0 -13
  228. package/src/combinator/data/parser/tails.ts +0 -8
  229. package/src/combinator/data/parser/union.test.ts +0 -33
  230. package/src/combinator/data/parser/union.ts +0 -18
  231. package/src/combinator/data/parser.ts +0 -144
@@ -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
  });