securemark 0.295.0 → 0.295.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (169) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/design.md +4 -3
  3. package/dist/index.js +529 -484
  4. package/markdown.d.ts +13 -28
  5. package/package.json +1 -1
  6. package/src/combinator/control/constraint/block.test.ts +6 -8
  7. package/src/combinator/control/constraint/contract.ts +7 -7
  8. package/src/combinator/control/constraint/line.test.ts +7 -9
  9. package/src/combinator/control/constraint/line.ts +0 -1
  10. package/src/combinator/control/manipulation/clear.ts +2 -2
  11. package/src/combinator/control/manipulation/convert.ts +3 -3
  12. package/src/combinator/control/manipulation/duplicate.ts +4 -4
  13. package/src/combinator/control/manipulation/fallback.ts +2 -2
  14. package/src/combinator/control/manipulation/fence.ts +3 -3
  15. package/src/combinator/control/manipulation/indent.test.ts +20 -22
  16. package/src/combinator/control/manipulation/indent.ts +2 -2
  17. package/src/combinator/control/manipulation/recovery.ts +3 -3
  18. package/src/combinator/control/manipulation/reverse.ts +2 -2
  19. package/src/combinator/control/manipulation/scope.ts +2 -4
  20. package/src/combinator/control/manipulation/surround.ts +66 -66
  21. package/src/combinator/control/monad/bind.ts +6 -6
  22. package/src/combinator/control/monad/fmap.ts +6 -6
  23. package/src/combinator/data/data.ts +2 -2
  24. package/src/combinator/data/{parser/context/delimiter.ts → delimiter.ts} +4 -4
  25. package/src/combinator/data/parser/context.test.ts +12 -11
  26. package/src/combinator/data/parser/context.ts +13 -14
  27. package/src/combinator/data/parser/inits.ts +5 -5
  28. package/src/combinator/data/parser/sequence.test.ts +12 -13
  29. package/src/combinator/data/parser/sequence.ts +5 -5
  30. package/src/combinator/data/parser/some.test.ts +15 -16
  31. package/src/combinator/data/parser/some.ts +5 -6
  32. package/src/combinator/data/parser/subsequence.test.ts +16 -17
  33. package/src/combinator/data/parser/subsequence.ts +3 -3
  34. package/src/combinator/data/parser/tails.ts +3 -3
  35. package/src/combinator/data/parser/union.test.ts +12 -13
  36. package/src/combinator/data/parser/union.ts +3 -3
  37. package/src/combinator/data/parser.ts +55 -32
  38. package/src/debug.test.ts +5 -3
  39. package/src/parser/api/bind.ts +8 -6
  40. package/src/parser/api/header.ts +4 -4
  41. package/src/parser/api/normalize.ts +2 -1
  42. package/src/parser/api/parse.test.ts +7 -6
  43. package/src/parser/api/parse.ts +9 -8
  44. package/src/parser/autolink.test.ts +18 -18
  45. package/src/parser/block/blockquote.test.ts +79 -79
  46. package/src/parser/block/blockquote.ts +5 -5
  47. package/src/parser/block/codeblock.test.ts +57 -57
  48. package/src/parser/block/codeblock.ts +3 -3
  49. package/src/parser/block/dlist.test.ts +57 -57
  50. package/src/parser/block/dlist.ts +6 -6
  51. package/src/parser/block/extension/aside.test.ts +9 -9
  52. package/src/parser/block/extension/aside.ts +5 -5
  53. package/src/parser/block/extension/example.test.ts +19 -19
  54. package/src/parser/block/extension/example.ts +6 -6
  55. package/src/parser/block/extension/fig.test.ts +36 -36
  56. package/src/parser/block/extension/figbase.test.ts +16 -16
  57. package/src/parser/block/extension/figbase.ts +2 -2
  58. package/src/parser/block/extension/figure.test.ts +63 -63
  59. package/src/parser/block/extension/figure.ts +3 -3
  60. package/src/parser/block/extension/message.test.ts +14 -14
  61. package/src/parser/block/extension/message.ts +5 -5
  62. package/src/parser/block/extension/placeholder.test.ts +13 -13
  63. package/src/parser/block/extension/placeholder.ts +2 -2
  64. package/src/parser/block/extension/table.test.ts +76 -76
  65. package/src/parser/block/extension/table.ts +14 -14
  66. package/src/parser/block/extension.test.ts +24 -24
  67. package/src/parser/block/heading.test.ts +59 -59
  68. package/src/parser/block/heading.ts +7 -7
  69. package/src/parser/block/ilist.test.ts +8 -12
  70. package/src/parser/block/ilist.ts +6 -6
  71. package/src/parser/block/mathblock.test.ts +32 -32
  72. package/src/parser/block/mathblock.ts +3 -3
  73. package/src/parser/block/mediablock.ts +3 -3
  74. package/src/parser/block/olist.test.ts +103 -103
  75. package/src/parser/block/olist.ts +5 -5
  76. package/src/parser/block/pagebreak.test.ts +16 -16
  77. package/src/parser/block/pagebreak.ts +2 -2
  78. package/src/parser/block/paragraph.test.ts +58 -58
  79. package/src/parser/block/paragraph.ts +2 -2
  80. package/src/parser/block/reply/cite.test.ts +40 -40
  81. package/src/parser/block/reply/cite.ts +6 -6
  82. package/src/parser/block/reply/quote.test.ts +51 -51
  83. package/src/parser/block/reply/quote.ts +3 -3
  84. package/src/parser/block/reply.test.ts +20 -20
  85. package/src/parser/block/reply.ts +3 -3
  86. package/src/parser/block/sidefence.test.ts +48 -48
  87. package/src/parser/block/sidefence.ts +4 -4
  88. package/src/parser/block/table.test.ts +50 -50
  89. package/src/parser/block/table.ts +12 -12
  90. package/src/parser/block/ulist.test.ts +53 -53
  91. package/src/parser/block/ulist.ts +6 -6
  92. package/src/parser/block.ts +6 -4
  93. package/src/parser/context.ts +39 -0
  94. package/src/parser/header.test.ts +23 -23
  95. package/src/parser/header.ts +5 -5
  96. package/src/parser/inline/annotation.test.ts +43 -43
  97. package/src/parser/inline/annotation.ts +15 -5
  98. package/src/parser/inline/autolink/account.test.ts +33 -33
  99. package/src/parser/inline/autolink/account.ts +9 -9
  100. package/src/parser/inline/autolink/anchor.test.ts +22 -22
  101. package/src/parser/inline/autolink/anchor.ts +4 -4
  102. package/src/parser/inline/autolink/channel.test.ts +15 -15
  103. package/src/parser/inline/autolink/email.test.ts +37 -37
  104. package/src/parser/inline/autolink/email.ts +2 -2
  105. package/src/parser/inline/autolink/hashnum.test.ts +33 -33
  106. package/src/parser/inline/autolink/hashnum.ts +6 -5
  107. package/src/parser/inline/autolink/hashtag.test.ts +60 -60
  108. package/src/parser/inline/autolink/hashtag.ts +4 -4
  109. package/src/parser/inline/autolink/url.test.ts +75 -75
  110. package/src/parser/inline/autolink/url.ts +4 -4
  111. package/src/parser/inline/bracket.test.ts +70 -70
  112. package/src/parser/inline/bracket.ts +35 -32
  113. package/src/parser/inline/code.test.ts +31 -31
  114. package/src/parser/inline/code.ts +4 -4
  115. package/src/parser/inline/deletion.test.ts +28 -28
  116. package/src/parser/inline/deletion.ts +4 -4
  117. package/src/parser/inline/emphasis.test.ts +40 -40
  118. package/src/parser/inline/emphasis.ts +3 -3
  119. package/src/parser/inline/emstrong.test.ts +101 -101
  120. package/src/parser/inline/emstrong.ts +23 -23
  121. package/src/parser/inline/extension/index.test.ts +92 -92
  122. package/src/parser/inline/extension/index.ts +5 -5
  123. package/src/parser/inline/extension/indexee.ts +5 -5
  124. package/src/parser/inline/extension/indexer.test.ts +24 -24
  125. package/src/parser/inline/extension/indexer.ts +2 -2
  126. package/src/parser/inline/extension/label.test.ts +33 -33
  127. package/src/parser/inline/extension/label.ts +2 -2
  128. package/src/parser/inline/extension/placeholder.test.ts +43 -43
  129. package/src/parser/inline/extension/placeholder.ts +4 -4
  130. package/src/parser/inline/html.test.ts +108 -108
  131. package/src/parser/inline/html.ts +10 -10
  132. package/src/parser/inline/htmlentity.test.ts +38 -38
  133. package/src/parser/inline/htmlentity.ts +5 -5
  134. package/src/parser/inline/insertion.test.ts +28 -28
  135. package/src/parser/inline/insertion.ts +4 -4
  136. package/src/parser/inline/italic.test.ts +55 -55
  137. package/src/parser/inline/italic.ts +4 -4
  138. package/src/parser/inline/link.test.ts +186 -187
  139. package/src/parser/inline/link.ts +16 -17
  140. package/src/parser/inline/mark.test.ts +31 -31
  141. package/src/parser/inline/mark.ts +5 -5
  142. package/src/parser/inline/math.test.ts +132 -132
  143. package/src/parser/inline/math.ts +2 -2
  144. package/src/parser/inline/media.test.ts +91 -91
  145. package/src/parser/inline/media.ts +15 -15
  146. package/src/parser/inline/reference.test.ts +109 -109
  147. package/src/parser/inline/reference.ts +16 -55
  148. package/src/parser/inline/remark.test.ts +50 -50
  149. package/src/parser/inline/remark.ts +5 -5
  150. package/src/parser/inline/ruby.test.ts +45 -45
  151. package/src/parser/inline/ruby.ts +17 -17
  152. package/src/parser/inline/shortmedia.test.ts +10 -10
  153. package/src/parser/inline/strong.test.ts +37 -37
  154. package/src/parser/inline/strong.ts +3 -3
  155. package/src/parser/inline/template.test.ts +23 -23
  156. package/src/parser/inline/template.ts +5 -5
  157. package/src/parser/inline.test.ts +224 -223
  158. package/src/parser/segment.ts +2 -2
  159. package/src/parser/source/escapable.test.ts +24 -24
  160. package/src/parser/source/escapable.ts +8 -8
  161. package/src/parser/source/line.test.ts +18 -18
  162. package/src/parser/source/str.ts +2 -2
  163. package/src/parser/source/text.test.ts +85 -85
  164. package/src/parser/source/text.ts +5 -5
  165. package/src/parser/source/unescapable.test.ts +24 -24
  166. package/src/parser/source/unescapable.ts +5 -5
  167. package/src/parser/util.ts +10 -11
  168. package/src/parser/visibility.ts +8 -9
  169. package/src/util/quote.ts +2 -1
@@ -1,91 +1,91 @@
1
1
  import { bracket } from './bracket';
2
2
  import { some } from '../../combinator';
3
3
  import { input } from '../../combinator/data/parser';
4
+ import { Context } from '../context';
4
5
  import { inspect } from '../../debug.test';
5
6
 
6
7
  describe('Unit: parser/inline/bracket', () => {
7
8
  describe('bracket', () => {
8
- const parser = (source: string) => some(bracket)(input(source, ctx));
9
- const { context: ctx } = input('', {});
9
+ const parser = some(bracket);
10
10
 
11
11
  it('(', () => {
12
- assert.deepStrictEqual(inspect(parser('('), ctx), [['('], '']);
13
- assert.deepStrictEqual(inspect(parser('()'), ctx), [['<span class="paren">()</span>'], '']);
14
- assert.deepStrictEqual(inspect(parser('(a'), ctx), [['(', 'a'], '']);
15
- assert.deepStrictEqual(inspect(parser('(0)'), ctx), [['(', '0', ')'], '']);
16
- assert.deepStrictEqual(inspect(parser('(1)'), ctx), [['(', '1', ')'], '']);
17
- assert.deepStrictEqual(inspect(parser('(10)'), ctx), [['(', '10', ')'], '']);
18
- assert.deepStrictEqual(inspect(parser('(2000)'), ctx), [['(', '2000', ')'], '']);
19
- assert.deepStrictEqual(inspect(parser('(0-1)'), ctx), [['(', '0-1', ')'], '']);
20
- assert.deepStrictEqual(inspect(parser('(0)-1'), ctx), [['(', '0', ')'], '-1']);
21
- assert.deepStrictEqual(inspect(parser('(0.1)'), ctx), [['(', '0.1', ')'], '']);
22
- assert.deepStrictEqual(inspect(parser('(0.1.2)'), ctx), [['(', '0.1.2', ')'], '']);
23
- assert.deepStrictEqual(inspect(parser('(1.1, 1.2-1.3, 1.4)'), ctx), [['(', '1.1, 1.2-1.3, 1.4', ')'], '']);
24
- assert.deepStrictEqual(inspect(parser('(1 2)'), ctx), [['<span class="paren">(1 2)</span>'], '']);
25
- assert.deepStrictEqual(inspect(parser('(1, 2)'), ctx), [['(', '1, 2', ')'], '']);
26
- assert.deepStrictEqual(inspect(parser('(1a)'), ctx), [['(', '1a', ')'], '']);
27
- assert.deepStrictEqual(inspect(parser('(a)'), ctx), [['(', 'a', ')'], '']);
28
- assert.deepStrictEqual(inspect(parser('(a1)'), ctx), [['(', 'a1', ')'], '']);
29
- assert.deepStrictEqual(inspect(parser('(a-1)'), ctx), [['(', 'a-1', ')'], '']);
30
- assert.deepStrictEqual(inspect(parser('(a.1)'), ctx), [['(', 'a.1', ')'], '']);
31
- assert.deepStrictEqual(inspect(parser('(a b)'), ctx), [['<span class="paren">(a b)</span>'], '']);
32
- assert.deepStrictEqual(inspect(parser('(word)'), ctx), [['(', 'word', ')'], '']);
33
- assert.deepStrictEqual(inspect(parser('(word word)'), ctx), [['<span class="paren">(word word)</span>'], '']);
34
- assert.deepStrictEqual(inspect(parser('(word, word)'), ctx), [['(', 'word, word', ')'], '']);
35
- assert.deepStrictEqual(inspect(parser('(A)'), ctx), [['(', 'A', ')'], '']);
36
- assert.deepStrictEqual(inspect(parser('(Name)'), ctx), [['(', 'Name', ')'], '']);
37
- assert.deepStrictEqual(inspect(parser('(Word word)'), ctx), [['<span class="paren">(Word word)</span>'], '']);
38
- assert.deepStrictEqual(inspect(parser('(Word Word)'), ctx), [['<span class="paren">(Word Word)</span>'], '']);
39
- assert.deepStrictEqual(inspect(parser('(Name, Name)'), ctx), [['(', 'Name, Name', ')'], '']);
40
- assert.deepStrictEqual(inspect(parser('(ABBR)'), ctx), [['(', 'ABBR', ')'], '']);
41
- assert.deepStrictEqual(inspect(parser('(ABBR, ABBR)'), ctx), [['(', 'ABBR, ABBR', ')'], '']);
42
- assert.deepStrictEqual(inspect(parser('(\\a)'), ctx), [['<span class="paren">(a)</span>'], '']);
43
- assert.deepStrictEqual(inspect(parser('(==)'), ctx), [['<span class="paren">(==)</span>'], '']);
44
- assert.deepStrictEqual(inspect(parser('("(\n))"(")'), ctx), [['<span class="paren">("(<br>)</span>'], ')"(")']);
45
- assert.deepStrictEqual(inspect(parser('($)$'), ctx), [['(', '<span class="math" translate="no" data-src="$)$">$)$</span>'], '']);
46
- assert.deepStrictEqual(inspect(parser(')'), ctx), undefined);
47
- assert.deepStrictEqual(inspect(parser('(1,2)'), ctx), [['(', '1,2', ')'], '']);
48
- assert.deepStrictEqual(inspect(parser('(0-1)'), ctx), [['(', '0-1', ')'], '']);
49
- assert.deepStrictEqual(inspect(parser('(0.1)'), ctx), [['(', '0.1', ')'], '']);
50
- assert.deepStrictEqual(inspect(parser('(a)'), ctx), [['(', 'a', ')'], '']);
51
- assert.deepStrictEqual(inspect(parser('(A)'), ctx), [['(', 'A', ')'], '']);
52
- assert.deepStrictEqual(inspect(parser('(A,B)'), ctx), [['(', 'A,B', ')'], '']);
53
- assert.deepStrictEqual(inspect(parser('(A、B)'), ctx), [['(', 'A、B', ')'], '']);
54
- assert.deepStrictEqual(inspect(parser('(<bdi>a\\\nb</bdi>)'), ctx), [['<span class="paren">(<bdi>a<br>b</bdi>)</span>'], '']);
55
- assert.deepStrictEqual(inspect(parser('([% a\\\nb %])'), ctx), [['<span class="paren">(<span class="remark"><input type="checkbox"><span>[% a<br>b %]</span></span>)</span>'], '']);
56
- assert.deepStrictEqual(inspect(parser('({{\\\n}})'), ctx), [['<span class="paren">(<span class="template">{{\\<br>}}</span>)</span>'], '']);
12
+ assert.deepStrictEqual(inspect(parser, input('(', new Context())), [['('], '']);
13
+ assert.deepStrictEqual(inspect(parser, input('()', new Context())), [['<span class="paren">()</span>'], '']);
14
+ assert.deepStrictEqual(inspect(parser, input('(a', new Context())), [['(', 'a'], '']);
15
+ assert.deepStrictEqual(inspect(parser, input('(0)', new Context())), [['(', '0', ')'], '']);
16
+ assert.deepStrictEqual(inspect(parser, input('(1)', new Context())), [['(', '1', ')'], '']);
17
+ assert.deepStrictEqual(inspect(parser, input('(10)', new Context())), [['(', '10', ')'], '']);
18
+ assert.deepStrictEqual(inspect(parser, input('(2000)', new Context())), [['(', '2000', ')'], '']);
19
+ assert.deepStrictEqual(inspect(parser, input('(0-1)', new Context())), [['(', '0-1', ')'], '']);
20
+ assert.deepStrictEqual(inspect(parser, input('(0)-1', new Context())), [['(', '0', ')'], '-1']);
21
+ assert.deepStrictEqual(inspect(parser, input('(0.1)', new Context())), [['(', '0.1', ')'], '']);
22
+ assert.deepStrictEqual(inspect(parser, input('(0.1.2)', new Context())), [['(', '0.1.2', ')'], '']);
23
+ assert.deepStrictEqual(inspect(parser, input('(1.1, 1.2-1.3, 1.4)', new Context())), [['(', '1.1, 1.2-1.3, 1.4', ')'], '']);
24
+ assert.deepStrictEqual(inspect(parser, input('(1 2)', new Context())), [['<span class="paren">(1 2)</span>'], '']);
25
+ assert.deepStrictEqual(inspect(parser, input('(1, 2)', new Context())), [['(', '1, 2', ')'], '']);
26
+ assert.deepStrictEqual(inspect(parser, input('(1a)', new Context())), [['(', '1a', ')'], '']);
27
+ assert.deepStrictEqual(inspect(parser, input('(a)', new Context())), [['(', 'a', ')'], '']);
28
+ assert.deepStrictEqual(inspect(parser, input('(a1)', new Context())), [['(', 'a1', ')'], '']);
29
+ assert.deepStrictEqual(inspect(parser, input('(a-1)', new Context())), [['(', 'a-1', ')'], '']);
30
+ assert.deepStrictEqual(inspect(parser, input('(a.1)', new Context())), [['(', 'a.1', ')'], '']);
31
+ assert.deepStrictEqual(inspect(parser, input('(a b)', new Context())), [['<span class="paren">(a b)</span>'], '']);
32
+ assert.deepStrictEqual(inspect(parser, input('(word)', new Context())), [['(', 'word', ')'], '']);
33
+ assert.deepStrictEqual(inspect(parser, input('(word word)', new Context())), [['<span class="paren">(word word)</span>'], '']);
34
+ assert.deepStrictEqual(inspect(parser, input('(word, word)', new Context())), [['(', 'word, word', ')'], '']);
35
+ assert.deepStrictEqual(inspect(parser, input('(A)', new Context())), [['(', 'A', ')'], '']);
36
+ assert.deepStrictEqual(inspect(parser, input('(Name)', new Context())), [['(', 'Name', ')'], '']);
37
+ assert.deepStrictEqual(inspect(parser, input('(Word word)', new Context())), [['<span class="paren">(Word word)</span>'], '']);
38
+ assert.deepStrictEqual(inspect(parser, input('(Word Word)', new Context())), [['<span class="paren">(Word Word)</span>'], '']);
39
+ assert.deepStrictEqual(inspect(parser, input('(Name, Name)', new Context())), [['(', 'Name, Name', ')'], '']);
40
+ assert.deepStrictEqual(inspect(parser, input('(ABBR)', new Context())), [['(', 'ABBR', ')'], '']);
41
+ assert.deepStrictEqual(inspect(parser, input('(ABBR, ABBR)', new Context())), [['(', 'ABBR, ABBR', ')'], '']);
42
+ assert.deepStrictEqual(inspect(parser, input('(\\a)', new Context())), [['<span class="paren">(a)</span>'], '']);
43
+ assert.deepStrictEqual(inspect(parser, input('(==)', new Context())), [['<span class="paren">(==)</span>'], '']);
44
+ assert.deepStrictEqual(inspect(parser, input('("(\n))"(")', new Context())), [['<span class="paren">("(<br>)</span>'], ')"(")']);
45
+ assert.deepStrictEqual(inspect(parser, input('($)$', new Context())), [['(', '<span class="math" translate="no" data-src="$)$">$)$</span>'], '']);
46
+ assert.deepStrictEqual(inspect(parser, input(')', new Context())), undefined);
47
+ assert.deepStrictEqual(inspect(parser, input('(1,2)', new Context())), [['(', '1,2', ')'], '']);
48
+ assert.deepStrictEqual(inspect(parser, input('(0-1)', new Context())), [['(', '0-1', ')'], '']);
49
+ assert.deepStrictEqual(inspect(parser, input('(0.1)', new Context())), [['(', '0.1', ')'], '']);
50
+ assert.deepStrictEqual(inspect(parser, input('(a)', new Context())), [['(', 'a', ')'], '']);
51
+ assert.deepStrictEqual(inspect(parser, input('(A)', new Context())), [['(', 'A', ')'], '']);
52
+ assert.deepStrictEqual(inspect(parser, input('(A,B)', new Context())), [['(', 'A,B', ')'], '']);
53
+ assert.deepStrictEqual(inspect(parser, input('(A、B)', new Context())), [['(', 'A、B', ')'], '']);
54
+ assert.deepStrictEqual(inspect(parser, input('(<bdi>a\\\nb</bdi>)', new Context())), [['<span class="paren">(<bdi>a<br>b</bdi>)</span>'], '']);
55
+ assert.deepStrictEqual(inspect(parser, input('([% a\\\nb %])', new Context())), [['<span class="paren">(<span class="remark"><input type="checkbox"><span>[% a<br>b %]</span></span>)</span>'], '']);
56
+ assert.deepStrictEqual(inspect(parser, input('({{\\\n}})', new Context())), [['<span class="paren">(<span class="template">{{\\<br>}}</span>)</span>'], '']);
57
57
  });
58
58
 
59
59
  it('[', () => {
60
- assert.deepStrictEqual(inspect(parser('['), ctx), [['['], '']);
61
- assert.deepStrictEqual(inspect(parser('[]'), ctx), [['[', ']'], '']);
62
- assert.deepStrictEqual(inspect(parser('[a'), ctx), [['[', 'a'], '']);
63
- assert.deepStrictEqual(inspect(parser('[a]'), ctx), [['[', 'a', ']'], '']);
64
- assert.deepStrictEqual(inspect(parser('[==]'), ctx), [['[', '==', ']'], '']);
65
- assert.deepStrictEqual(inspect(parser('[$]$'), ctx), [['[', '<span class="math" translate="no" data-src="$]$">$]$</span>'], '']);
66
- assert.deepStrictEqual(inspect(parser(']'), ctx), undefined);
60
+ assert.deepStrictEqual(inspect(parser, input('[', new Context())), [['['], '']);
61
+ assert.deepStrictEqual(inspect(parser, input('[]', new Context())), [['[', ']'], '']);
62
+ assert.deepStrictEqual(inspect(parser, input('[a', new Context())), [['[', 'a'], '']);
63
+ assert.deepStrictEqual(inspect(parser, input('[a]', new Context())), [['[', 'a', ']'], '']);
64
+ assert.deepStrictEqual(inspect(parser, input('[==]', new Context())), [['[', '==', ']'], '']);
65
+ assert.deepStrictEqual(inspect(parser, input('[$]$', new Context())), [['[', '<span class="math" translate="no" data-src="$]$">$]$</span>'], '']);
66
+ assert.deepStrictEqual(inspect(parser, input(']', new Context())), undefined);
67
67
  });
68
68
 
69
69
  it('{', () => {
70
- assert.deepStrictEqual(inspect(parser('{'), ctx), [['{'], '']);
71
- assert.deepStrictEqual(inspect(parser('{}'), ctx), [['{', '}'], '']);
72
- assert.deepStrictEqual(inspect(parser('{a'), ctx), [['{', 'a'], '']);
73
- assert.deepStrictEqual(inspect(parser('{a}'), ctx), [['{', 'a', '}'], '']);
74
- assert.deepStrictEqual(inspect(parser('{==}'), ctx), [['{', '==', '}'], '']);
75
- assert.deepStrictEqual(inspect(parser('}'), ctx), undefined);
70
+ assert.deepStrictEqual(inspect(parser, input('{', new Context())), [['{'], '']);
71
+ assert.deepStrictEqual(inspect(parser, input('{}', new Context())), [['{', '}'], '']);
72
+ assert.deepStrictEqual(inspect(parser, input('{a', new Context())), [['{', 'a'], '']);
73
+ assert.deepStrictEqual(inspect(parser, input('{a}', new Context())), [['{', 'a', '}'], '']);
74
+ assert.deepStrictEqual(inspect(parser, input('{==}', new Context())), [['{', '==', '}'], '']);
75
+ assert.deepStrictEqual(inspect(parser, input('}', new Context())), undefined);
76
76
  });
77
77
 
78
78
  it('"', () => {
79
- assert.deepStrictEqual(inspect(parser('"'), ctx), [['"'], '']);
80
- assert.deepStrictEqual(inspect(parser('""'), ctx), [['"', '"'], '']);
81
- assert.deepStrictEqual(inspect(parser('"a'), ctx), [['"', 'a'], '']);
82
- assert.deepStrictEqual(inspect(parser('"a"'), ctx), [['"', 'a', '"'], '']);
83
- assert.deepStrictEqual(inspect(parser('"(")"'), ctx), [['"', '(', '"'], ')"']);
84
- assert.deepStrictEqual(inspect(parser('"(("'), ctx), [['"', '(', '(', '"'], '']);
85
- assert.deepStrictEqual(inspect(parser('"(\\")"'), ctx), [['"', '<span class="paren">(")</span>', '"'], '']);
86
- assert.deepStrictEqual(inspect(parser('"(\n)"(")'), ctx), [['"', '('], '\n)"(")']);
87
- assert.deepStrictEqual(inspect(parser('"\n"'), ctx), [['"'], '\n"']);
88
- assert.deepStrictEqual(inspect(parser('"\n"(")'), ctx), [['"'], '\n"(")']);
79
+ assert.deepStrictEqual(inspect(parser, input('"', new Context())), [['"'], '']);
80
+ assert.deepStrictEqual(inspect(parser, input('""', new Context())), [['"', '"'], '']);
81
+ assert.deepStrictEqual(inspect(parser, input('"a', new Context())), [['"', 'a'], '']);
82
+ assert.deepStrictEqual(inspect(parser, input('"a"', new Context())), [['"', 'a', '"'], '']);
83
+ assert.deepStrictEqual(inspect(parser, input('"(")"', new Context())), [['"', '(', '"'], ')"']);
84
+ assert.deepStrictEqual(inspect(parser, input('"(("', new Context())), [['"', '(', '(', '"'], '']);
85
+ assert.deepStrictEqual(inspect(parser, input('"(\\")"', new Context())), [['"', '<span class="paren">(")</span>', '"'], '']);
86
+ assert.deepStrictEqual(inspect(parser, input('"(\n)"(")', new Context())), [['"', '('], '\n)"(")']);
87
+ assert.deepStrictEqual(inspect(parser, input('"\n"', new Context())), [['"'], '\n"']);
88
+ assert.deepStrictEqual(inspect(parser, input('"\n"(")', new Context())), [['"'], '\n"(")']);
89
89
  });
90
90
 
91
91
  });
@@ -1,6 +1,6 @@
1
1
  import { BracketParser } from '../inline';
2
2
  import { State, Recursion, Backtrack } from '../context';
3
- import { List, Data } from '../../combinator/data/parser';
3
+ import { List, Node } from '../../combinator/data/parser';
4
4
  import { union, some, recursion, precedence, surround, isBacktrack, setBacktrack, lazy } from '../../combinator';
5
5
  import { inline } from '../inline';
6
6
  import { textlink } from './link';
@@ -40,37 +40,35 @@ const p1 = lazy(() => surround(
40
40
  str(')'),
41
41
  true, [],
42
42
  ([as, bs = new List(), cs], context) => {
43
- const { source, position, range = 0 } = context;
43
+ const { source, position, range } = context;
44
44
  const head = position - range;
45
- if (context.linebreak !== 0 || source[position - 2] !== ')' || source[head + 1] !== '(') {
46
- setBacktrack(context, 2 | Backtrack.doublebracket, head);
45
+ if (context.linebreak !== 0) {
46
+ if (head > 0 && source[head - 1] === '(') {
47
+ setBacktrack(context, 2 | Backtrack.doublebracket, head - 1);
48
+ }
49
+ }
50
+ else if (source[position] !== ')' && source[head - 1] === '(') {
51
+ setBacktrack(context, 2 | Backtrack.doublebracket, head - 1);
47
52
  }
48
53
  const str = source.slice(position - range + 1, position - 1);
49
54
  return indexA.test(str)
50
- ? new List([new Data(as.head!.value), new Data(str), new Data(cs.head!.value)])
51
- : new List([new Data(html('span', { class: 'paren' }, defrag(unwrap(as.import(bs as List<Data<string>>).import(cs)))))]);
55
+ ? new List([new Node(as.head!.value), new Node(str), new Node(cs.head!.value)])
56
+ : new List([new Node(html('span', { class: 'paren' }, defrag(unwrap(as.import(bs as List<Node<string>>).import(cs)))))]);
52
57
  },
53
- ([as, bs = new List()], context) => {
54
- const { source, position, range = 0 } = context;
55
- const head = position - range;
56
- if (context.linebreak !== 0 || source[head + 1] !== '(') {
57
- setBacktrack(context, 2 | Backtrack.doublebracket, head);
58
- }
59
- return as.import(bs as List<Data<string>>);
60
- }));
58
+ ([as, bs = new List()]) => as.import(bs as List<Node<string>>)));
61
59
 
62
60
  const p2 = lazy(() => surround(
63
61
  str('('),
64
62
  precedence(1, recursion(Recursion.bracket, some(inline, ')', [[')', 1]]))),
65
63
  str(')'),
66
64
  true, [],
67
- ([as, bs = [], cs], { source, position, range = 0 }) => {
65
+ ([as, bs = [], cs], { source, position, range }) => {
68
66
  const str = source.slice(position - range + 1, position - 1);
69
67
  return indexF.test(str)
70
- ? new List([new Data(as.head!.value), new Data(str), new Data(cs.head!.value)])
71
- : new List([new Data(html('span', { class: 'paren' }, defrag(unwrap(as.import(bs as List<Data<string>>).import(cs)))))]);
68
+ ? new List([new Node(as.head!.value), new Node(str), new Node(cs.head!.value)])
69
+ : new List([new Node(html('span', { class: 'paren' }, defrag(unwrap(as.import(bs as List<Node<string>>).import(cs)))))]);
72
70
  },
73
- ([as, bs = new List()]) => as.import(bs as List<Data<string>>)));
71
+ ([as, bs = new List()]) => as.import(bs as List<Node<string>>)));
74
72
 
75
73
  const s1 = lazy(() => surround(
76
74
  str('['),
@@ -79,20 +77,25 @@ const s1 = lazy(() => surround(
79
77
  true,
80
78
  [2 | Backtrack.common],
81
79
  ([as, bs = new List(), cs], context) => {
82
- if (context.state! & State.link) {
83
- const { source, position, range = 0 } = context;
84
- const head = position - range;
85
- if (context.linebreak !== 0 || source[position - 2] !== ']' || source[head + 1] !== '[') {
86
- setBacktrack(context, 2 | Backtrack.doublebracket, head);
80
+ const { source, position, range } = context;
81
+ const head = position - range;
82
+ if (context.linebreak !== 0) {
83
+ if (head > 0 && source[head - 1] === '[') {
84
+ setBacktrack(context, 2 | Backtrack.doublebracket, head - 1);
87
85
  }
86
+ }
87
+ else if (source[position] !== ']' && source[head - 1] === '[') {
88
+ setBacktrack(context, 2 | Backtrack.doublebracket, head - 1);
89
+ }
90
+ if (context.state & State.link) {
88
91
  if (context.linebreak !== 0) {
89
- setBacktrack(context, 2 | Backtrack.doublebracket | Backtrack.link | Backtrack.ruby, head);
92
+ setBacktrack(context, 2 | Backtrack.link | Backtrack.ruby, head);
90
93
  }
91
94
  else if (source[position] !== '{') {
92
95
  setBacktrack(context, 2 | Backtrack.link, head);
93
96
  }
94
97
  else {
95
- context.state! ^= State.link;
98
+ context.state ^= State.link;
96
99
  const result = !isBacktrack(context, 1 | Backtrack.link)
97
100
  ? textlink({ context })
98
101
  : undefined;
@@ -100,13 +103,13 @@ const s1 = lazy(() => surround(
100
103
  if (!result) {
101
104
  setBacktrack(context, 2 | Backtrack.link, head);
102
105
  }
103
- context.state! ^= State.link;
106
+ context.state ^= State.link;
104
107
  context.range = range;
105
108
  }
106
109
  }
107
- return as.import(bs as List<Data<string>>).import(cs);
110
+ return as.import(bs as List<Node<string>>).import(cs);
108
111
  },
109
- ([as, bs = new List()]) => as.import(bs as List<Data<string>>)));
112
+ ([as, bs = new List()]) => as.import(bs as List<Node<string>>)));
110
113
 
111
114
  const s2 = lazy(() => surround(
112
115
  str('['),
@@ -114,7 +117,7 @@ const s2 = lazy(() => surround(
114
117
  str(']'),
115
118
  true, [],
116
119
  undefined,
117
- ([as, bs = new List()]) => as.import(bs as List<Data<string>>)));
120
+ ([as, bs = new List()]) => as.import(bs as List<Node<string>>)));
118
121
 
119
122
  const c1 = lazy(() => surround(
120
123
  str('{'),
@@ -122,7 +125,7 @@ const c1 = lazy(() => surround(
122
125
  str('}'),
123
126
  true, [],
124
127
  undefined,
125
- ([as, bs = new List()]) => as.import(bs as List<Data<string>>)));
128
+ ([as, bs = new List()]) => as.import(bs as List<Node<string>>)));
126
129
 
127
130
  const c2 = lazy(() => surround(
128
131
  str('{'),
@@ -130,7 +133,7 @@ const c2 = lazy(() => surround(
130
133
  str('}'),
131
134
  true, [],
132
135
  undefined,
133
- ([as, bs = new List()]) => as.import(bs as List<Data<string>>)));
136
+ ([as, bs = new List()]) => as.import(bs as List<Node<string>>)));
134
137
 
135
138
  const d1 = lazy(() => surround(
136
139
  str('"'),
@@ -139,4 +142,4 @@ const d1 = lazy(() => surround(
139
142
  str('"'),
140
143
  true, [],
141
144
  undefined,
142
- ([as, bs = new List()]) => as.import(bs as List<Data<string>>)));
145
+ ([as, bs = new List()]) => as.import(bs as List<Node<string>>)));
@@ -1,55 +1,55 @@
1
1
  import { code } from './code';
2
2
  import { some } from '../../combinator';
3
3
  import { input } from '../../combinator/data/parser';
4
+ import { Context } from '../context';
4
5
  import { inspect } from '../../debug.test';
5
6
 
6
7
  describe('Unit: parser/inline/code', () => {
7
8
  describe('code', () => {
8
- const parser = (source: string) => some(code)(input(source, ctx));
9
- const { context: ctx } = input('', {});
9
+ const parser = some(code);
10
10
 
11
11
  it('invalid', () => {
12
- assert.deepStrictEqual(inspect(parser(''), ctx), undefined);
13
- assert.deepStrictEqual(inspect(parser('`'), ctx), [['`'], '']);
14
- assert.deepStrictEqual(inspect(parser('``'), ctx), [['``'], '']);
15
- assert.deepStrictEqual(inspect(parser('``a`'), ctx), [['<code class="invalid">``a`</code>'], '']);
16
- assert.deepStrictEqual(inspect(parser('`a``'), ctx), [ [ '<code class="invalid">`a``</code>' ], '' ]);
17
- assert.deepStrictEqual(inspect(parser('`\n`'), ctx), [['`'], '\n`']);
18
- assert.deepStrictEqual(inspect(parser('`a\nb`'), ctx), [['<code class="invalid">`a</code>'], '\nb`']);
19
- assert.deepStrictEqual(inspect(parser('`a\\\nb`'), ctx), [['<code class="invalid">`a\\</code>'], '\nb`']);
20
- assert.deepStrictEqual(inspect(parser(' ` `'), ctx), undefined);
12
+ assert.deepStrictEqual(inspect(parser, input('', new Context())), undefined);
13
+ assert.deepStrictEqual(inspect(parser, input('`', new Context())), [['`'], '']);
14
+ assert.deepStrictEqual(inspect(parser, input('``', new Context())), [['``'], '']);
15
+ assert.deepStrictEqual(inspect(parser, input('``a`', new Context())), [['<code class="invalid">``a`</code>'], '']);
16
+ assert.deepStrictEqual(inspect(parser, input('`a``', new Context())), [ [ '<code class="invalid">`a``</code>' ], '' ]);
17
+ assert.deepStrictEqual(inspect(parser, input('`\n`', new Context())), [['`'], '\n`']);
18
+ assert.deepStrictEqual(inspect(parser, input('`a\nb`', new Context())), [['<code class="invalid">`a</code>'], '\nb`']);
19
+ assert.deepStrictEqual(inspect(parser, input('`a\\\nb`', new Context())), [['<code class="invalid">`a\\</code>'], '\nb`']);
20
+ assert.deepStrictEqual(inspect(parser, input(' ` `', new Context())), undefined);
21
21
  });
22
22
 
23
23
  it('basic', () => {
24
- assert.deepStrictEqual(inspect(parser('` `'), ctx), [['<code data-src="` `"> </code>'], '']);
25
- assert.deepStrictEqual(inspect(parser('` `'), ctx), [['<code data-src="` `"> </code>'], '']);
26
- assert.deepStrictEqual(inspect(parser('` `'), ctx), [['<code data-src="` `"> </code>'], '']);
27
- assert.deepStrictEqual(inspect(parser('`a`'), ctx), [['<code data-src="`a`">a</code>'], '']);
28
- assert.deepStrictEqual(inspect(parser('`ab`'), ctx), [['<code data-src="`ab`">ab</code>'], '']);
29
- assert.deepStrictEqual(inspect(parser('`a`b'), ctx), [['<code data-src="`a`">a</code>'], 'b']);
30
- assert.deepStrictEqual(inspect(parser('`a`b`'), ctx), [['<code data-src="`a`">a</code>'], 'b`']);
31
- assert.deepStrictEqual(inspect(parser('`a`\n'), ctx), [['<code data-src="`a`">a</code>'], '\n']);
24
+ assert.deepStrictEqual(inspect(parser, input('` `', new Context())), [['<code data-src="` `"> </code>'], '']);
25
+ assert.deepStrictEqual(inspect(parser, input('` `', new Context())), [['<code data-src="` `"> </code>'], '']);
26
+ assert.deepStrictEqual(inspect(parser, input('` `', new Context())), [['<code data-src="` `"> </code>'], '']);
27
+ assert.deepStrictEqual(inspect(parser, input('`a`', new Context())), [['<code data-src="`a`">a</code>'], '']);
28
+ assert.deepStrictEqual(inspect(parser, input('`ab`', new Context())), [['<code data-src="`ab`">ab</code>'], '']);
29
+ assert.deepStrictEqual(inspect(parser, input('`a`b', new Context())), [['<code data-src="`a`">a</code>'], 'b']);
30
+ assert.deepStrictEqual(inspect(parser, input('`a`b`', new Context())), [['<code data-src="`a`">a</code>'], 'b`']);
31
+ assert.deepStrictEqual(inspect(parser, input('`a`\n', new Context())), [['<code data-src="`a`">a</code>'], '\n']);
32
32
  });
33
33
 
34
34
  it('escape', () => {
35
- assert.deepStrictEqual(inspect(parser('`\\`'), ctx), [['<code data-src="`\\`">\\</code>'], '']);
36
- assert.deepStrictEqual(inspect(parser('`\\\\`'), ctx), [['<code data-src="`\\\\`">\\\\</code>'], '']);
37
- assert.deepStrictEqual(inspect(parser('`&nbsp;`'), ctx), [['<code data-src="`&amp;nbsp;`">&amp;nbsp;</code>'], '']);
38
- assert.deepStrictEqual(inspect(parser('` `` `'), ctx), [['<code data-src="` `` `">``</code>'], '']);
39
- assert.deepStrictEqual(inspect(parser('`` ` ``'), ctx), [['<code data-src="`` ` ``">`</code>'], '']);
35
+ assert.deepStrictEqual(inspect(parser, input('`\\`', new Context())), [['<code data-src="`\\`">\\</code>'], '']);
36
+ assert.deepStrictEqual(inspect(parser, input('`\\\\`', new Context())), [['<code data-src="`\\\\`">\\\\</code>'], '']);
37
+ assert.deepStrictEqual(inspect(parser, input('`&nbsp;`', new Context())), [['<code data-src="`&amp;nbsp;`">&amp;nbsp;</code>'], '']);
38
+ assert.deepStrictEqual(inspect(parser, input('` `` `', new Context())), [['<code data-src="` `` `">``</code>'], '']);
39
+ assert.deepStrictEqual(inspect(parser, input('`` ` ``', new Context())), [['<code data-src="`` ` ``">`</code>'], '']);
40
40
  });
41
41
 
42
42
  it('nest', () => {
43
- assert.deepStrictEqual(inspect(parser('`<wbr>`'), ctx), [['<code data-src="`&lt;wbr&gt;`">&lt;wbr&gt;</code>'], '']);
44
- assert.deepStrictEqual(inspect(parser('`*u*`'), ctx), [['<code data-src="`*u*`">*u*</code>'], '']);
43
+ assert.deepStrictEqual(inspect(parser, input('`<wbr>`', new Context())), [['<code data-src="`&lt;wbr&gt;`">&lt;wbr&gt;</code>'], '']);
44
+ assert.deepStrictEqual(inspect(parser, input('`*u*`', new Context())), [['<code data-src="`*u*`">*u*</code>'], '']);
45
45
  });
46
46
 
47
47
  it('trim', () => {
48
- assert.deepStrictEqual(inspect(parser('`a `'), ctx), [['<code data-src="`a `">a </code>'], '']);
49
- assert.deepStrictEqual(inspect(parser('` a`'), ctx), [['<code data-src="` a`"> a</code>'], '']);
50
- assert.deepStrictEqual(inspect(parser('` a `'), ctx), [['<code data-src="` a `"> a </code>'], '']);
51
- assert.deepStrictEqual(inspect(parser('` a `'), ctx), [['<code data-src="` a `"> a </code>'], '']);
52
- assert.deepStrictEqual(inspect(parser('`\ta\t`'), ctx), [['<code data-src="`\ta\t`">\ta\t</code>'], '']);
48
+ assert.deepStrictEqual(inspect(parser, input('`a `', new Context())), [['<code data-src="`a `">a </code>'], '']);
49
+ assert.deepStrictEqual(inspect(parser, input('` a`', new Context())), [['<code data-src="` a`"> a</code>'], '']);
50
+ assert.deepStrictEqual(inspect(parser, input('` a `', new Context())), [['<code data-src="` a `"> a </code>'], '']);
51
+ assert.deepStrictEqual(inspect(parser, input('` a `', new Context())), [['<code data-src="` a `"> a </code>'], '']);
52
+ assert.deepStrictEqual(inspect(parser, input('`\ta\t`', new Context())), [['<code data-src="`\ta\t`">\ta\t</code>'], '']);
53
53
  });
54
54
 
55
55
  });
@@ -1,5 +1,5 @@
1
1
  import { CodeParser } from '../inline';
2
- import { List, Data } from '../../combinator/data/parser';
2
+ import { List, Node } from '../../combinator/data/parser';
3
3
  import { match } from '../../combinator';
4
4
  import { invalid } from '../util';
5
5
  import { html } from 'typed-dom/dom';
@@ -8,13 +8,13 @@ export const code: CodeParser = match(
8
8
  /(`+)(?!`)([^\n]*?)(?:((?<!`)\1(?!`))|(?=$|\n))/y,
9
9
  ([whole, opener, body, closer]) => () =>
10
10
  closer
11
- ? new List([new Data(html('code', { 'data-src': whole }, format(body)))])
11
+ ? new List([new Node(html('code', { 'data-src': whole }, format(body)))])
12
12
  : body
13
- ? new List([new Data(html('code', {
13
+ ? new List([new Node(html('code', {
14
14
  class: 'invalid',
15
15
  ...invalid('code', 'syntax', `Missing the closing symbol "${opener}"`)
16
16
  }, whole))])
17
- : new List([new Data(opener)]));
17
+ : new List([new Node(opener)]));
18
18
 
19
19
  function format(text: string): string {
20
20
  return text.length > 2
@@ -1,46 +1,46 @@
1
1
  import { deletion } from './deletion';
2
2
  import { some } from '../../combinator';
3
3
  import { input } from '../../combinator/data/parser';
4
+ import { Context } from '../context';
4
5
  import { inspect } from '../../debug.test';
5
6
 
6
7
  describe('Unit: parser/inline/deletion', () => {
7
8
  describe('deletion', () => {
8
- const parser = (source: string) => some(deletion)(input(source, ctx));
9
- const { context: ctx } = input('', {});
9
+ const parser = some(deletion);
10
10
 
11
11
  it('invalid', () => {
12
- assert.deepStrictEqual(inspect(parser(''), ctx), undefined);
13
- assert.deepStrictEqual(inspect(parser('~'), ctx), undefined);
14
- assert.deepStrictEqual(inspect(parser('~~'), ctx), undefined);
15
- assert.deepStrictEqual(inspect(parser('~~a'), ctx), [['~~', 'a'], '']);
16
- assert.deepStrictEqual(inspect(parser('~~a~'), ctx), [['~~', 'a~'], '']);
17
- assert.deepStrictEqual(inspect(parser(' ~~a~~'), ctx), undefined);
12
+ assert.deepStrictEqual(inspect(parser, input('', new Context())), undefined);
13
+ assert.deepStrictEqual(inspect(parser, input('~', new Context())), undefined);
14
+ assert.deepStrictEqual(inspect(parser, input('~~', new Context())), undefined);
15
+ assert.deepStrictEqual(inspect(parser, input('~~a', new Context())), [['~~', 'a'], '']);
16
+ assert.deepStrictEqual(inspect(parser, input('~~a~', new Context())), [['~~', 'a~'], '']);
17
+ assert.deepStrictEqual(inspect(parser, input(' ~~a~~', new Context())), undefined);
18
18
  });
19
19
 
20
20
  it('basic', () => {
21
- assert.deepStrictEqual(inspect(parser('~~a~~'), ctx), [['<del>a</del>'], '']);
22
- assert.deepStrictEqual(inspect(parser('~~a~b~~'), ctx), [['<del>a~b</del>'], '']);
23
- assert.deepStrictEqual(inspect(parser('~~ ~~'), ctx), [['<del> </del>'], '']);
24
- assert.deepStrictEqual(inspect(parser('~~ a~~'), ctx), [['<del> a</del>'], '']);
25
- assert.deepStrictEqual(inspect(parser('~~ a ~~'), ctx), [['<del> a </del>'], '']);
26
- assert.deepStrictEqual(inspect(parser('~~ a ~~'), ctx), [['<del> a </del>'], '']);
27
- assert.deepStrictEqual(inspect(parser('~~\na~~'), ctx), [['<del><br>a</del>'], '']);
28
- assert.deepStrictEqual(inspect(parser('~~\\\na~~'), ctx), [['<del><br>a</del>'], '']);
29
- assert.deepStrictEqual(inspect(parser('~~<wbr>a~~'), ctx), [['<del><wbr>a</del>'], '']);
30
- assert.deepStrictEqual(inspect(parser('~~a ~~'), ctx), [['<del>a </del>'], '']);
31
- assert.deepStrictEqual(inspect(parser('~~a \n ~~'), ctx), [['<del>a </del>'], '']);
32
- assert.deepStrictEqual(inspect(parser('~~a\n~~'), ctx), [['<del>a</del>'], '']);
33
- assert.deepStrictEqual(inspect(parser('~~a\n ~~'), ctx), [['<del>a </del>'], '']);
34
- assert.deepStrictEqual(inspect(parser('~~a\n<wbr>~~'), ctx), [['<del>a<wbr></del>'], '']);
35
- assert.deepStrictEqual(inspect(parser('~~a\nb~~'), ctx), [['<del>a<br>b</del>'], '']);
36
- assert.deepStrictEqual(inspect(parser('~~a\\\nb~~'), ctx), [['<del>a<br>b</del>'], '']);
37
- assert.deepStrictEqual(inspect(parser('~~\\~~~'), ctx), [['<del>~</del>'], '']);
38
- assert.deepStrictEqual(inspect(parser('~~a~~~'), ctx), [['<del>a</del>'], '~']);
21
+ assert.deepStrictEqual(inspect(parser, input('~~a~~', new Context())), [['<del>a</del>'], '']);
22
+ assert.deepStrictEqual(inspect(parser, input('~~a~b~~', new Context())), [['<del>a~b</del>'], '']);
23
+ assert.deepStrictEqual(inspect(parser, input('~~ ~~', new Context())), [['<del> </del>'], '']);
24
+ assert.deepStrictEqual(inspect(parser, input('~~ a~~', new Context())), [['<del> a</del>'], '']);
25
+ assert.deepStrictEqual(inspect(parser, input('~~ a ~~', new Context())), [['<del> a </del>'], '']);
26
+ assert.deepStrictEqual(inspect(parser, input('~~ a ~~', new Context())), [['<del> a </del>'], '']);
27
+ assert.deepStrictEqual(inspect(parser, input('~~\na~~', new Context())), [['<del><br>a</del>'], '']);
28
+ assert.deepStrictEqual(inspect(parser, input('~~\\\na~~', new Context())), [['<del><br>a</del>'], '']);
29
+ assert.deepStrictEqual(inspect(parser, input('~~<wbr>a~~', new Context())), [['<del><wbr>a</del>'], '']);
30
+ assert.deepStrictEqual(inspect(parser, input('~~a ~~', new Context())), [['<del>a </del>'], '']);
31
+ assert.deepStrictEqual(inspect(parser, input('~~a \n ~~', new Context())), [['<del>a </del>'], '']);
32
+ assert.deepStrictEqual(inspect(parser, input('~~a\n~~', new Context())), [['<del>a</del>'], '']);
33
+ assert.deepStrictEqual(inspect(parser, input('~~a\n ~~', new Context())), [['<del>a </del>'], '']);
34
+ assert.deepStrictEqual(inspect(parser, input('~~a\n<wbr>~~', new Context())), [['<del>a<wbr></del>'], '']);
35
+ assert.deepStrictEqual(inspect(parser, input('~~a\nb~~', new Context())), [['<del>a<br>b</del>'], '']);
36
+ assert.deepStrictEqual(inspect(parser, input('~~a\\\nb~~', new Context())), [['<del>a<br>b</del>'], '']);
37
+ assert.deepStrictEqual(inspect(parser, input('~~\\~~~', new Context())), [['<del>~</del>'], '']);
38
+ assert.deepStrictEqual(inspect(parser, input('~~a~~~', new Context())), [['<del>a</del>'], '~']);
39
39
  });
40
40
 
41
41
  it('nest', () => {
42
- assert.deepStrictEqual(inspect(parser('~~*~~a~~*~~'), ctx), [['<del><em><del>a</del></em></del>'], '']);
43
- assert.deepStrictEqual(inspect(parser('~~*++a++*~~'), ctx), [['<del><em><ins>a</ins></em></del>'], '']);
42
+ assert.deepStrictEqual(inspect(parser, input('~~*~~a~~*~~', new Context())), [['<del><em><del>a</del></em></del>'], '']);
43
+ assert.deepStrictEqual(inspect(parser, input('~~*++a++*~~', new Context())), [['<del><em><ins>a</ins></em></del>'], '']);
44
44
  });
45
45
 
46
46
  });
@@ -1,6 +1,6 @@
1
1
  import { DeletionParser } from '../inline';
2
2
  import { Recursion, Command } from '../context';
3
- import { List, Data } from '../../combinator/data/parser';
3
+ import { List, Node } from '../../combinator/data/parser';
4
4
  import { union, some, recursion, precedence, surround, open, lazy } from '../../combinator';
5
5
  import { inline } from '../inline';
6
6
  import { blankWith } from '../visibility';
@@ -17,6 +17,6 @@ export const deletion: DeletionParser = lazy(() =>
17
17
  ]))),
18
18
  '~~',
19
19
  false, [],
20
- ([, bs], { buffer }) => buffer!.import(bs),
21
- ([, bs], { buffer }) => bs && buffer!.import(bs).push(new Data(Command.Cancel)) && buffer!),
22
- nodes => new List([new Data(html('del', defrag(unwrap(nodes))))]))));
20
+ ([, bs], { buffer }) => buffer.import(bs),
21
+ ([, bs], { buffer }) => bs && buffer.import(bs).push(new Node(Command.Cancel)) && buffer),
22
+ nodes => new List([new Node(html('del', defrag(unwrap(nodes))))]))));