securemark 0.263.1 → 0.265.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.
- package/CHANGELOG.md +11 -0
- package/dist/index.js +1218 -3058
- package/markdown.d.ts +1 -1
- package/package.json +18 -18
- package/src/combinator/data/parser/context.ts +3 -2
- package/src/combinator/data/parser/some.ts +2 -1
- package/src/parser/api/bind.test.ts +1 -1
- package/src/parser/api/normalize.ts +1 -1
- package/src/parser/api/parse.test.ts +3 -3
- package/src/parser/block/blockquote.test.ts +3 -3
- package/src/parser/block/blockquote.ts +1 -1
- package/src/parser/block/dlist.ts +2 -3
- package/src/parser/block/extension/aside.ts +0 -2
- package/src/parser/block/extension/example.test.ts +1 -1
- package/src/parser/block/extension/fig.ts +2 -1
- package/src/parser/block/extension/figure.test.ts +2 -2
- package/src/parser/block/extension/figure.ts +2 -3
- package/src/parser/block/extension/table.ts +2 -3
- package/src/parser/block/heading.test.ts +1 -1
- package/src/parser/block/olist.test.ts +27 -25
- package/src/parser/block/paragraph.test.ts +1 -1
- package/src/parser/block/paragraph.ts +2 -3
- package/src/parser/block/reply.ts +2 -3
- package/src/parser/block/sidefence.ts +1 -1
- package/src/parser/block/ulist.test.ts +23 -23
- package/src/parser/context.ts +15 -19
- package/src/parser/inline/annotation.ts +1 -1
- package/src/parser/inline/bracket.test.ts +1 -1
- package/src/parser/inline/bracket.ts +1 -1
- package/src/parser/inline/deletion.test.ts +2 -2
- package/src/parser/inline/emphasis.test.ts +2 -2
- package/src/parser/inline/emphasis.ts +2 -2
- package/src/parser/inline/extension/index.test.ts +28 -32
- package/src/parser/inline/extension/index.ts +1 -1
- package/src/parser/inline/extension/indexee.ts +23 -15
- package/src/parser/inline/extension/placeholder.test.ts +10 -12
- package/src/parser/inline/extension/placeholder.ts +7 -7
- package/src/parser/inline/html.test.ts +1 -1
- package/src/parser/inline/html.ts +2 -2
- package/src/parser/inline/insertion.test.ts +2 -2
- package/src/parser/inline/link.test.ts +32 -27
- package/src/parser/inline/link.ts +52 -56
- package/src/parser/inline/mark.test.ts +11 -11
- package/src/parser/inline/mark.ts +12 -6
- package/src/parser/inline/strong.test.ts +2 -2
- package/src/parser/inline/strong.ts +2 -2
- package/src/parser/inline.test.ts +11 -9
- package/src/parser/processor/figure.ts +0 -2
- package/src/parser/processor/footnote.ts +0 -4
- package/src/parser/source/escapable.test.ts +1 -1
- package/src/parser/source/escapable.ts +7 -1
- package/src/parser/source/text.test.ts +24 -35
- package/src/parser/source/text.ts +2 -15
- package/src/parser/visibility.ts +1 -6
- package/src/util/toc.ts +0 -2
- package/src/parser/locale/ja.test.ts +0 -14
- package/src/parser/locale/ja.ts +0 -3
- package/src/parser/locale.test.ts +0 -26
- package/src/parser/locale.ts +0 -61
|
@@ -28,51 +28,51 @@ describe('Unit: parser/block/ulist', () => {
|
|
|
28
28
|
// filled
|
|
29
29
|
assert.deepStrictEqual(inspect(parser('- \\')), [['<ul><li></li></ul>'], '']);
|
|
30
30
|
assert.deepStrictEqual(inspect(parser('- \\\n')), [['<ul><li></li></ul>'], '']);
|
|
31
|
-
assert.deepStrictEqual(inspect(parser('- -')), [['<ul><li>-</li></ul>'], '']);
|
|
32
|
-
assert.deepStrictEqual(inspect(parser('- -\n')), [['<ul><li>-</li></ul>'], '']);
|
|
31
|
+
assert.deepStrictEqual(inspect(parser('- -')), [['<ul><li id="index:-">-</li></ul>'], '']);
|
|
32
|
+
assert.deepStrictEqual(inspect(parser('- -\n')), [['<ul><li id="index:-">-</li></ul>'], '']);
|
|
33
33
|
});
|
|
34
34
|
|
|
35
35
|
it('multiple', () => {
|
|
36
36
|
// pending
|
|
37
37
|
assert.deepStrictEqual(inspect(parser('-\n-')), [['<ul><li></li><li></li></ul>'], '']);
|
|
38
38
|
// filled
|
|
39
|
-
assert.deepStrictEqual(inspect(parser('- 1\n- 2')), [['<ul><li>1</li><li>2</li></ul>'], '']);
|
|
40
|
-
assert.deepStrictEqual(inspect(parser('- 1\n- 2\n- 3')), [['<ul><li>1</li><li>2</li><li>3</li></ul>'], '']);
|
|
39
|
+
assert.deepStrictEqual(inspect(parser('- 1\n- 2')), [['<ul><li id="index:1">1</li><li id="index:2">2</li></ul>'], '']);
|
|
40
|
+
assert.deepStrictEqual(inspect(parser('- 1\n- 2\n- 3')), [['<ul><li id="index:1">1</li><li id="index:2">2</li><li id="index:3">3</li></ul>'], '']);
|
|
41
41
|
// invalid
|
|
42
|
-
assert.deepStrictEqual(inspect(parser('-\n+')), [['<ul><li></li><li><span class="invalid">+</span></li></ul>'], '']);
|
|
43
|
-
assert.deepStrictEqual(inspect(parser('-\n0')), [['<ul><li></li><li><span class="invalid">0</span></li></ul>'], '']);
|
|
42
|
+
assert.deepStrictEqual(inspect(parser('-\n+')), [['<ul><li></li><li id="index:+"><span class="invalid">+</span></li></ul>'], '']);
|
|
43
|
+
assert.deepStrictEqual(inspect(parser('-\n0')), [['<ul><li></li><li id="index:0"><span class="invalid">0</span></li></ul>'], '']);
|
|
44
44
|
});
|
|
45
45
|
|
|
46
46
|
it('nest', () => {
|
|
47
47
|
assert.deepStrictEqual(inspect(parser('-\n -')), [['<ul><li><br><ul><li></li></ul></li></ul>'], '']);
|
|
48
|
-
assert.deepStrictEqual(inspect(parser('- 1\n - 2')), [['<ul><li>1<ul><li>2</li></ul></li></ul>'], '']);
|
|
49
|
-
assert.deepStrictEqual(inspect(parser('- 1\n - 2\n- 3')), [['<ul><li>1<ul><li>2</li></ul></li><li>3</li></ul>'], '']);
|
|
50
|
-
assert.deepStrictEqual(inspect(parser('- 1\n - 2\n - 3')), [['<ul><li>1<ul><li>2</li><li>3</li></ul></li></ul>'], '']);
|
|
51
|
-
assert.deepStrictEqual(inspect(parser('- 1\n - 2\n - 3')), [['<ul><li>1<ul><li>2<ul><li>3</li></ul></li></ul></li></ul>'], '']);
|
|
52
|
-
assert.deepStrictEqual(inspect(parser('- 1\n - 2\n - 3')), [['<ul><li>1<ul><li>2</li></ul></li><li><span class="invalid"> - 3</span></li></ul>'], '']);
|
|
53
|
-
assert.deepStrictEqual(inspect(parser('-\n -\n +\n -\n +\n+')), [['<ul><li><br><ul><li></li><li><span class="invalid">+</span></li><li></li><li><span class="invalid">+</span></li></ul></li><li><span class="invalid">+</span></li></ul>'], '']);
|
|
54
|
-
assert.deepStrictEqual(inspect(parser('- 1\n + 2')), [['<ul><li>1<ul class="invalid"><li>2</li></ul></li></ul>'], '']);
|
|
55
|
-
assert.deepStrictEqual(inspect(parser('- 1\n 0')), [['<ul><li>1<ol><li></li></ol></li></ul>'], '']);
|
|
56
|
-
assert.deepStrictEqual(inspect(parser('- 1\n 0.')), [['<ul><li>1<ol><li></li></ol></li></ul>'], '']);
|
|
57
|
-
assert.deepStrictEqual(inspect(parser('- 1\n 0. ')), [['<ul><li>1<ol><li></li></ol></li></ul>'], '']);
|
|
58
|
-
assert.deepStrictEqual(inspect(parser('- 1\n 0. 2')), [['<ul><li>1<ol><li>2</li></ol></li></ul>'], '']);
|
|
59
|
-
assert.deepStrictEqual(inspect(parser('- !http://host')), [['<ul><li>!<a class="url" href="http://host" target="_blank">http://host</a></li></ul>'], '']);
|
|
48
|
+
assert.deepStrictEqual(inspect(parser('- 1\n - 2')), [['<ul><li id="index:1">1<ul><li id="index:2">2</li></ul></li></ul>'], '']);
|
|
49
|
+
assert.deepStrictEqual(inspect(parser('- 1\n - 2\n- 3')), [['<ul><li id="index:1">1<ul><li id="index:2">2</li></ul></li><li id="index:3">3</li></ul>'], '']);
|
|
50
|
+
assert.deepStrictEqual(inspect(parser('- 1\n - 2\n - 3')), [['<ul><li id="index:1">1<ul><li id="index:2">2</li><li id="index:3">3</li></ul></li></ul>'], '']);
|
|
51
|
+
assert.deepStrictEqual(inspect(parser('- 1\n - 2\n - 3')), [['<ul><li id="index:1">1<ul><li id="index:2">2<ul><li id="index:3">3</li></ul></li></ul></li></ul>'], '']);
|
|
52
|
+
assert.deepStrictEqual(inspect(parser('- 1\n - 2\n - 3')), [['<ul><li id="index:1">1<ul><li id="index:2">2</li></ul></li><li id="index:-_3"><span class="invalid"> - 3</span></li></ul>'], '']);
|
|
53
|
+
assert.deepStrictEqual(inspect(parser('-\n -\n +\n -\n +\n+')), [['<ul><li><br><ul><li></li><li id="index:+"><span class="invalid">+</span></li><li></li><li id="index:+"><span class="invalid">+</span></li></ul></li><li id="index:+"><span class="invalid">+</span></li></ul>'], '']);
|
|
54
|
+
assert.deepStrictEqual(inspect(parser('- 1\n + 2')), [['<ul><li id="index:1">1<ul class="invalid"><li>2</li></ul></li></ul>'], '']);
|
|
55
|
+
assert.deepStrictEqual(inspect(parser('- 1\n 0')), [['<ul><li id="index:1">1<ol><li></li></ol></li></ul>'], '']);
|
|
56
|
+
assert.deepStrictEqual(inspect(parser('- 1\n 0.')), [['<ul><li id="index:1">1<ol><li></li></ol></li></ul>'], '']);
|
|
57
|
+
assert.deepStrictEqual(inspect(parser('- 1\n 0. ')), [['<ul><li id="index:1">1<ol><li></li></ol></li></ul>'], '']);
|
|
58
|
+
assert.deepStrictEqual(inspect(parser('- 1\n 0. 2')), [['<ul><li id="index:1">1<ol><li id="index:2">2</li></ol></li></ul>'], '']);
|
|
59
|
+
assert.deepStrictEqual(inspect(parser('- !http://host')), [['<ul><li id="index:!http://host">!<a class="url" href="http://host" target="_blank">http://host</a></li></ul>'], '']);
|
|
60
60
|
});
|
|
61
61
|
|
|
62
62
|
it('checkbox', () => {
|
|
63
63
|
assert.deepStrictEqual(inspect(parser('- [ ]')), [['<ul class="checklist"><li><span class="checkbox">☐</span></li></ul>'], '']);
|
|
64
64
|
assert.deepStrictEqual(inspect(parser('- [x]')), [['<ul class="checklist"><li><span class="checkbox">☑</span></li></ul>'], '']);
|
|
65
65
|
assert.deepStrictEqual(inspect(parser('- [X]')), [['<ul class="checklist"><li><span class="checkbox">☑</span></li></ul>'], '']);
|
|
66
|
-
assert.deepStrictEqual(inspect(parser('- [X] 1')), [['<ul class="checklist"><li><span class="checkbox">☑</span>1</li></ul>'], '']);
|
|
66
|
+
assert.deepStrictEqual(inspect(parser('- [X] 1')), [['<ul class="checklist"><li id="index:1"><span class="checkbox">☑</span>1</li></ul>'], '']);
|
|
67
67
|
});
|
|
68
68
|
|
|
69
69
|
it('indexer', () => {
|
|
70
|
-
assert.deepStrictEqual(inspect(parser('- [#a]')), [['<ul><li><a class="index" href="#index:a">a</a></li></ul>'], '']);
|
|
71
|
-
assert.deepStrictEqual(inspect(parser('- a [#]')), [['<ul><li
|
|
70
|
+
assert.deepStrictEqual(inspect(parser('- [#a]')), [['<ul><li id="index:a"><a class="index" href="#index:a">a</a></li></ul>'], '']);
|
|
71
|
+
assert.deepStrictEqual(inspect(parser('- a [#]')), [['<ul><li>a<span class="indexer" data-index=""></span></li></ul>'], '']);
|
|
72
72
|
assert.deepStrictEqual(inspect(parser('- a [#b]')), [['<ul><li id="index:b">a<span class="indexer" data-index="b"></span></li></ul>'], '']);
|
|
73
|
-
assert.deepStrictEqual(inspect(parser('- [ ] [#a]')), [['<ul class="checklist"><li><span class="checkbox">☐</span><a class="index" href="#index:a">a</a></li></ul>'], '']);
|
|
73
|
+
assert.deepStrictEqual(inspect(parser('- [ ] [#a]')), [['<ul class="checklist"><li id="index:a"><span class="checkbox">☐</span><a class="index" href="#index:a">a</a></li></ul>'], '']);
|
|
74
74
|
assert.deepStrictEqual(inspect(parser('- [ ] a [#b]')), [['<ul class="checklist"><li id="index:b"><span class="checkbox">☐</span>a<span class="indexer" data-index="b"></span></li></ul>'], '']);
|
|
75
|
-
assert.deepStrictEqual(inspect(parser('- a [#]\n - c [#d]')), [['<ul><li
|
|
75
|
+
assert.deepStrictEqual(inspect(parser('- a [#]\n - c [#d]')), [['<ul><li>a<span class="indexer" data-index=""></span><ul><li id="index:d">c<span class="indexer" data-index="d"></span></li></ul></li></ul>'], '']);
|
|
76
76
|
assert.deepStrictEqual(inspect(parser('- a [#b]\n - c [#d]')), [['<ul><li id="index:b">a<span class="indexer" data-index="b"></span><ul><li id="index:d">c<span class="indexer" data-index="d"></span></li></ul></li></ul>'], '']);
|
|
77
77
|
});
|
|
78
78
|
|
package/src/parser/context.ts
CHANGED
|
@@ -1,28 +1,23 @@
|
|
|
1
1
|
export const enum Syntax {
|
|
2
|
-
reference = 1 <<
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
media = 1 << 6,
|
|
10
|
-
annotation = 1 << 5,
|
|
11
|
-
mathbracket = 1 << 4,
|
|
12
|
-
html = 1 << 3,
|
|
13
|
-
math = 1 << 2,
|
|
2
|
+
reference = 1 << 8,
|
|
3
|
+
index = 1 << 7,
|
|
4
|
+
placeholder = 1 << 6,
|
|
5
|
+
ruby = 1 << 5,
|
|
6
|
+
link = 1 << 4,
|
|
7
|
+
bracket = 1 << 3,
|
|
8
|
+
media = 1 << 2,
|
|
14
9
|
autolink = 1 << 1,
|
|
15
|
-
quote = 1 << 0,
|
|
16
10
|
none = 0,
|
|
17
11
|
}
|
|
18
12
|
|
|
19
13
|
export const enum State {
|
|
20
|
-
annotation = 1 <<
|
|
21
|
-
reference = 1 <<
|
|
22
|
-
index = 1 <<
|
|
23
|
-
label = 1 <<
|
|
24
|
-
link = 1 <<
|
|
25
|
-
media = 1 <<
|
|
14
|
+
annotation = 1 << 8,
|
|
15
|
+
reference = 1 << 7,
|
|
16
|
+
index = 1 << 6,
|
|
17
|
+
label = 1 << 5,
|
|
18
|
+
link = 1 << 4,
|
|
19
|
+
media = 1 << 3,
|
|
20
|
+
mark = 1 << 2,
|
|
26
21
|
autolink = 1 << 1,
|
|
27
22
|
shortcut = 1 << 0,
|
|
28
23
|
none = 0,
|
|
@@ -33,6 +28,7 @@ export const enum State {
|
|
|
33
28
|
| State.index
|
|
34
29
|
| State.label
|
|
35
30
|
| State.link
|
|
31
|
+
| State.mark
|
|
36
32
|
| State.autolink,
|
|
37
33
|
backtrackers = 0
|
|
38
34
|
| State.annotation
|
|
@@ -8,7 +8,7 @@ import { html, defrag } from 'typed-dom/dom';
|
|
|
8
8
|
export const annotation: AnnotationParser = lazy(() => surround(
|
|
9
9
|
'((',
|
|
10
10
|
constraint(State.annotation, false,
|
|
11
|
-
syntax(Syntax.
|
|
11
|
+
syntax(Syntax.none, 6, 1, State.annotation | State.media,
|
|
12
12
|
startLoose(
|
|
13
13
|
context({ delimiters: undefined },
|
|
14
14
|
some(union([inline]), ')', [[/^\\?\n/, 9], [')', 2], ['))', 6]])), ')'))),
|
|
@@ -78,7 +78,7 @@ describe('Unit: parser/inline/bracket', () => {
|
|
|
78
78
|
assert.deepStrictEqual(inspect(parser('"(("')), [['"', '', '(', '', '(', '"'], '']);
|
|
79
79
|
assert.deepStrictEqual(inspect(parser('"(\\")"')), [['"', '<span class="paren">(")</span>', '"'], '']);
|
|
80
80
|
assert.deepStrictEqual(inspect(parser('"(\n)"')), [['"', '<span class="paren">(<br>)</span>', '"'], '']);
|
|
81
|
-
assert.deepStrictEqual(inspect(parser('"(\\\n)"')), [['"', '<span class="paren">(<
|
|
81
|
+
assert.deepStrictEqual(inspect(parser('"(\\\n)"')), [['"', '<span class="paren">(<br>)</span>', '"'], '']);
|
|
82
82
|
});
|
|
83
83
|
|
|
84
84
|
});
|
|
@@ -24,7 +24,7 @@ export const bracket: BracketParser = lazy(() => union([
|
|
|
24
24
|
undefined,
|
|
25
25
|
([as, bs = []], rest) => [unshift(as, bs), rest]),
|
|
26
26
|
// Control media blinking in editing rather than control confusion of pairs of quote marks.
|
|
27
|
-
surround(str('"'), syntax(Syntax.
|
|
27
|
+
surround(str('"'), syntax(Syntax.none, 8, 1, State.none, some(inline, '"', [['"', 8]])), str('"'), true,
|
|
28
28
|
undefined,
|
|
29
29
|
([as, bs = []], rest) => [unshift(as, bs), rest]),
|
|
30
30
|
]));
|
|
@@ -23,7 +23,7 @@ describe('Unit: parser/inline/deletion', () => {
|
|
|
23
23
|
assert.deepStrictEqual(inspect(parser('~~ a ~~')), [['<del> a </del>'], '']);
|
|
24
24
|
assert.deepStrictEqual(inspect(parser('~~ a ~~')), [['<del> a </del>'], '']);
|
|
25
25
|
assert.deepStrictEqual(inspect(parser('~~\na~~')), [['<del><br>a</del>'], '']);
|
|
26
|
-
assert.deepStrictEqual(inspect(parser('~~\\\na~~')), [['<del><
|
|
26
|
+
assert.deepStrictEqual(inspect(parser('~~\\\na~~')), [['<del><br>a</del>'], '']);
|
|
27
27
|
assert.deepStrictEqual(inspect(parser('~~<wbr>a~~')), [['<del><wbr>a</del>'], '']);
|
|
28
28
|
assert.deepStrictEqual(inspect(parser('~~a ~~')), [['<del>a </del>'], '']);
|
|
29
29
|
assert.deepStrictEqual(inspect(parser('~~a \n ~~')), [['<del>a </del>'], '']);
|
|
@@ -31,7 +31,7 @@ describe('Unit: parser/inline/deletion', () => {
|
|
|
31
31
|
assert.deepStrictEqual(inspect(parser('~~a\n ~~')), [['<del>a </del>'], '']);
|
|
32
32
|
assert.deepStrictEqual(inspect(parser('~~a\n<wbr>~~')), [['<del>a<wbr></del>'], '']);
|
|
33
33
|
assert.deepStrictEqual(inspect(parser('~~a\nb~~')), [['<del>a<br>b</del>'], '']);
|
|
34
|
-
assert.deepStrictEqual(inspect(parser('~~a\\\nb~~')), [['<del>a<
|
|
34
|
+
assert.deepStrictEqual(inspect(parser('~~a\\\nb~~')), [['<del>a<br>b</del>'], '']);
|
|
35
35
|
assert.deepStrictEqual(inspect(parser('~~\\~~~')), [['<del>~</del>'], '']);
|
|
36
36
|
assert.deepStrictEqual(inspect(parser('~~a~~~')), [['<del>a</del>'], '~']);
|
|
37
37
|
});
|
|
@@ -12,8 +12,10 @@ describe('Unit: parser/inline/emphasis', () => {
|
|
|
12
12
|
assert.deepStrictEqual(inspect(parser('_a _')), [['_', 'a'], ' _']);
|
|
13
13
|
assert.deepStrictEqual(inspect(parser('_a _')), [['_', 'a', ' '], ' _']);
|
|
14
14
|
assert.deepStrictEqual(inspect(parser('_a\n_')), [['_', 'a'], '\n_']);
|
|
15
|
+
assert.deepStrictEqual(inspect(parser('_a\nb_')), [['_', 'a'], '\nb_']);
|
|
15
16
|
assert.deepStrictEqual(inspect(parser('_a\\ _')), [['_', 'a'], '\\ _']);
|
|
16
17
|
assert.deepStrictEqual(inspect(parser('_a\\\n_')), [['_', 'a'], '\\\n_']);
|
|
18
|
+
assert.deepStrictEqual(inspect(parser('_a\\\nb_')), [['_', 'a'], '\\\nb_']);
|
|
17
19
|
assert.deepStrictEqual(inspect(parser('_ _')), undefined);
|
|
18
20
|
assert.deepStrictEqual(inspect(parser('_ a_')), undefined);
|
|
19
21
|
assert.deepStrictEqual(inspect(parser('_ a _')), undefined);
|
|
@@ -28,8 +30,6 @@ describe('Unit: parser/inline/emphasis', () => {
|
|
|
28
30
|
it('basic', () => {
|
|
29
31
|
assert.deepStrictEqual(inspect(parser('_a_')), [['<em>a</em>'], '']);
|
|
30
32
|
assert.deepStrictEqual(inspect(parser('_ab_')), [['<em>ab</em>'], '']);
|
|
31
|
-
assert.deepStrictEqual(inspect(parser('_a\nb_')), [['<em>a<br>b</em>'], '']);
|
|
32
|
-
assert.deepStrictEqual(inspect(parser('_a\\\nb_')), [['<em>a<span class="linebreak"> </span>b</em>'], '']);
|
|
33
33
|
});
|
|
34
34
|
|
|
35
35
|
it('nest', () => {
|
|
@@ -11,8 +11,8 @@ export const emphasis: EmphasisParser = lazy(() => surround(
|
|
|
11
11
|
str('_', '_'),
|
|
12
12
|
syntax(Syntax.none, 1, 1, State.none,
|
|
13
13
|
startTight(some(union([
|
|
14
|
-
some(inline, blankWith('_')),
|
|
15
|
-
open(some(inline, '_'), emphasis),
|
|
14
|
+
some(inline, blankWith('_'), [[/^\\?\n/, 9]]),
|
|
15
|
+
open(some(inline, '_', [[/^\\?\n/, 9]]), emphasis),
|
|
16
16
|
])))),
|
|
17
17
|
str('_'), false,
|
|
18
18
|
([, bs], rest) => [[html('em', defrag(bs))], rest],
|
|
@@ -20,19 +20,17 @@ describe('Unit: parser/inline/extension/index', () => {
|
|
|
20
20
|
assert.deepStrictEqual(inspect(parser('[#\\]')), undefined);
|
|
21
21
|
assert.deepStrictEqual(inspect(parser('[#a')), undefined);
|
|
22
22
|
assert.deepStrictEqual(inspect(parser('[#*a\nb*]')), undefined);
|
|
23
|
-
assert.deepStrictEqual(inspect(parser('[#a\n
|
|
24
|
-
assert.deepStrictEqual(inspect(parser('[#a
|
|
25
|
-
assert.deepStrictEqual(inspect(parser('[#a
|
|
26
|
-
assert.deepStrictEqual(inspect(parser('[#a
|
|
27
|
-
assert.deepStrictEqual(inspect(parser('[#a
|
|
23
|
+
assert.deepStrictEqual(inspect(parser('[#a\n|b]')), undefined);
|
|
24
|
+
assert.deepStrictEqual(inspect(parser('[#a|\n]')), undefined);
|
|
25
|
+
assert.deepStrictEqual(inspect(parser('[#a|\\\n]')), undefined);
|
|
26
|
+
assert.deepStrictEqual(inspect(parser('[#a|(\n)]')), undefined);
|
|
27
|
+
assert.deepStrictEqual(inspect(parser('[#a|(\\\n)]')), undefined);
|
|
28
28
|
assert.deepStrictEqual(inspect(parser('[# |]')), undefined);
|
|
29
|
-
assert.deepStrictEqual(inspect(parser('[#
|
|
30
|
-
assert.deepStrictEqual(inspect(parser('[# |#b]')), undefined);
|
|
29
|
+
assert.deepStrictEqual(inspect(parser('[# |b]')), undefined);
|
|
31
30
|
assert.deepStrictEqual(inspect(parser('[# a|]')), undefined);
|
|
32
|
-
assert.deepStrictEqual(inspect(parser('[# a
|
|
33
|
-
assert.deepStrictEqual(inspect(parser('[# a
|
|
34
|
-
assert.deepStrictEqual(inspect(parser('[# a
|
|
35
|
-
assert.deepStrictEqual(inspect(parser('[# a|# b]')), undefined);
|
|
31
|
+
assert.deepStrictEqual(inspect(parser('[# a|b]')), undefined);
|
|
32
|
+
assert.deepStrictEqual(inspect(parser('[# a| ]')), undefined);
|
|
33
|
+
assert.deepStrictEqual(inspect(parser('[# a| b]')), undefined);
|
|
36
34
|
assert.deepStrictEqual(inspect(parser(' [#a]')), undefined);
|
|
37
35
|
});
|
|
38
36
|
|
|
@@ -70,28 +68,26 @@ describe('Unit: parser/inline/extension/index', () => {
|
|
|
70
68
|
|
|
71
69
|
it('indexer', () => {
|
|
72
70
|
assert.deepStrictEqual(inspect(parser('[#|]')), [['<a class="index" href="#index:|">|</a>'], '']);
|
|
73
|
-
assert.deepStrictEqual(inspect(parser('[
|
|
74
|
-
assert.deepStrictEqual(inspect(parser('[#|#b]')), [['<a class="index" href="#index:|#b">|#b</a>'], '']);
|
|
71
|
+
assert.deepStrictEqual(inspect(parser('[#|b]')), [['<a class="index" href="#index:|b">|b</a>'], '']);
|
|
75
72
|
assert.deepStrictEqual(inspect(parser('[#a|]')), [['<a class="index" href="#index:a|">a|</a>'], '']);
|
|
76
|
-
assert.deepStrictEqual(inspect(parser('[#a
|
|
77
|
-
assert.deepStrictEqual(inspect(parser('[#a
|
|
78
|
-
assert.deepStrictEqual(inspect(parser('[#a
|
|
79
|
-
assert.deepStrictEqual(inspect(parser('[#a
|
|
80
|
-
assert.deepStrictEqual(inspect(parser('[#a
|
|
81
|
-
assert.deepStrictEqual(inspect(parser('[#a
|
|
82
|
-
assert.deepStrictEqual(inspect(parser('[#a
|
|
83
|
-
assert.deepStrictEqual(inspect(parser('[#a
|
|
84
|
-
assert.deepStrictEqual(inspect(parser('[#a
|
|
85
|
-
assert.deepStrictEqual(inspect(parser('[#a
|
|
86
|
-
assert.deepStrictEqual(inspect(parser('[#a
|
|
87
|
-
assert.deepStrictEqual(inspect(parser('[#a
|
|
88
|
-
assert.deepStrictEqual(inspect(parser('[#a
|
|
89
|
-
assert.deepStrictEqual(inspect(parser('[#a
|
|
90
|
-
assert.deepStrictEqual(inspect(parser('[#a
|
|
91
|
-
assert.deepStrictEqual(inspect(parser('[#a
|
|
92
|
-
assert.deepStrictEqual(inspect(parser('[#a
|
|
93
|
-
assert.deepStrictEqual(inspect(parser('[#a
|
|
94
|
-
assert.deepStrictEqual(inspect(parser('[#a\\ |#b]')), [['<a class="index" href="#index:b">a<span class="indexer" data-index="b"></span></a>'], '']);
|
|
73
|
+
assert.deepStrictEqual(inspect(parser('[#a| ]')), [['<a class="index" href="#index:a|">a|</a>'], '']);
|
|
74
|
+
assert.deepStrictEqual(inspect(parser('[#a|\\ ]')), [['<a class="index" href="#index:a|">a|</a>'], '']);
|
|
75
|
+
assert.deepStrictEqual(inspect(parser('[#a|b]')), [['<a class="index" href="#index:b">a<span class="indexer" data-index="b"></span></a>'], '']);
|
|
76
|
+
assert.deepStrictEqual(inspect(parser('[#a|b ]')), [['<a class="index" href="#index:b">a<span class="indexer" data-index="b"></span></a>'], '']);
|
|
77
|
+
assert.deepStrictEqual(inspect(parser('[#a|b ]')), [['<a class="index" href="#index:b">a<span class="indexer" data-index="b"></span></a>'], '']);
|
|
78
|
+
assert.deepStrictEqual(inspect(parser('[#a|\\b]')), [['<a class="index" href="#index:b">a<span class="indexer" data-index="b"></span></a>'], '']);
|
|
79
|
+
assert.deepStrictEqual(inspect(parser('[#a|_b_]')), [['<a class="index" href="#index:_b_">a<span class="indexer" data-index="_b_"></span></a>'], '']);
|
|
80
|
+
assert.deepStrictEqual(inspect(parser('[#a|b c]')), [['<a class="index" href="#index:b_c">a<span class="indexer" data-index="b_c"></span></a>'], '']);
|
|
81
|
+
assert.deepStrictEqual(inspect(parser('[#a|b c]')), [['<a class="index" href="#index:b_c">a<span class="indexer" data-index="b_c"></span></a>'], '']);
|
|
82
|
+
assert.deepStrictEqual(inspect(parser('[#a|[]]')), [['<a class="index" href="#index:[]">a<span class="indexer" data-index="[]"></span></a>'], '']);
|
|
83
|
+
assert.deepStrictEqual(inspect(parser('[#a|©]')), [['<a class="index" href="#index:&copy;">a<span class="indexer" data-index="&copy;"></span></a>'], '']);
|
|
84
|
+
assert.deepStrictEqual(inspect(parser('[#a |b]')), [['<a class="index" href="#index:b">a<span class="indexer" data-index="b"></span></a>'], '']);
|
|
85
|
+
assert.deepStrictEqual(inspect(parser('[#a |b]')), [['<a class="index" href="#index:b">a<span class="indexer" data-index="b"></span></a>'], '']);
|
|
86
|
+
assert.deepStrictEqual(inspect(parser('[#a \\ |b]')), [['<a class="index" href="#index:b">a<span class="indexer" data-index="b"></span></a>'], '']);
|
|
87
|
+
assert.deepStrictEqual(inspect(parser('[#a |b]')), [['<a class="index" href="#index:b">a<span class="indexer" data-index="b"></span></a>'], '']);
|
|
88
|
+
assert.deepStrictEqual(inspect(parser('[#a <wbr>|b]')), [['<a class="index" href="#index:b">a<span class="indexer" data-index="b"></span></a>'], '']);
|
|
89
|
+
assert.deepStrictEqual(inspect(parser('[#a [% b %]|c]')), [['<a class="index" href="#index:c">a <span class="comment"><input type="checkbox"><span>[% b %]</span></span><span class="indexer" data-index="c"></span></a>'], '']);
|
|
90
|
+
assert.deepStrictEqual(inspect(parser('[#a\\ |b]')), [['<a class="index" href="#index:b">a<span class="indexer" data-index="b"></span></a>'], '']);
|
|
95
91
|
});
|
|
96
92
|
|
|
97
93
|
});
|
|
@@ -32,7 +32,7 @@ export const index: IndexParser = lazy(() => validate('[#', fmap(indexee(surroun
|
|
|
32
32
|
])));
|
|
33
33
|
|
|
34
34
|
const signature: IndexParser.SignatureParser = lazy(() => creation(fmap(open(
|
|
35
|
-
'
|
|
35
|
+
'|',
|
|
36
36
|
startTight(some(union([bracket, txt]), ']'))),
|
|
37
37
|
ns => [
|
|
38
38
|
html('span', { class: 'indexer', 'data-index': identity(ns.join('')).slice(6) }),
|
|
@@ -8,33 +8,43 @@ export function indexee(parser: Parser<HTMLElement, MarkdownParser.Context>, opt
|
|
|
8
8
|
return fmap(parser, ([el], _, { id }) => [define(el, { id: id !== '' && identity(text(el, optional)) || undefined })]);
|
|
9
9
|
}
|
|
10
10
|
|
|
11
|
-
export function identity(text: string): string {
|
|
11
|
+
export function identity(text: string, name: 'index' | 'mark' = 'index'): string {
|
|
12
12
|
assert(!text.includes('\n'));
|
|
13
|
-
text &&= text.trim();
|
|
14
|
-
|
|
13
|
+
text &&= text.trim().replace(/\s+/g, '_');
|
|
14
|
+
if (text.length <= 100) return text && `${name}:${text}`;
|
|
15
|
+
switch (name) {
|
|
16
|
+
case 'index':
|
|
17
|
+
return `${name}:${text.slice(0, 97)}...`;
|
|
18
|
+
case 'mark':
|
|
19
|
+
return `${name}:${text.slice(0, 50)}...${text.slice(-47)}`;
|
|
20
|
+
}
|
|
15
21
|
}
|
|
16
|
-
assert(identity('0'.repeat(100)).slice(6) === '0'.repeat(100));
|
|
17
|
-
assert(identity('0'.repeat(
|
|
18
|
-
assert(identity('0'.repeat(200)).slice(6) === '0'.repeat(97) + '...');
|
|
22
|
+
assert(identity('0'.repeat(100 - 1) + 1).slice(6) === '0'.repeat(100 - 1) + 1);
|
|
23
|
+
assert(identity('0'.repeat(100) + 1).slice(6) === '0'.repeat(97) + '...');
|
|
24
|
+
assert(identity('0'.repeat(200) + 1).slice(6) === '0'.repeat(97) + '...');
|
|
25
|
+
assert(identity('0'.repeat(100 - 1) + 1, 'mark').slice(5) === '0'.repeat(100 - 1) + 1);
|
|
26
|
+
assert(identity('0'.repeat(100) + 1, 'mark').slice(5) === '0'.repeat(50) + '...' + '0'.repeat(47 - 1) + 1);
|
|
27
|
+
assert(identity('0'.repeat(200) + 1, 'mark').slice(5) === '0'.repeat(50) + '...' + '0'.repeat(47 - 1) + 1);
|
|
19
28
|
|
|
20
29
|
export function text(source: HTMLElement | DocumentFragment, optional = false): string {
|
|
21
30
|
assert(source instanceof DocumentFragment || !source.matches('.indexer'));
|
|
22
31
|
assert(source.querySelectorAll(':scope > .indexer').length <= 1);
|
|
23
32
|
const indexer = source.querySelector(':scope > .indexer');
|
|
24
|
-
if (!indexer && optional) return '';
|
|
25
33
|
const index = indexer?.getAttribute('data-index');
|
|
26
34
|
if (index) return index;
|
|
27
|
-
|
|
35
|
+
if (index === '' && optional) return '';
|
|
36
|
+
assert(!navigator.userAgent.includes('Chrome') || !source.querySelector('br:not(:has(+ :is(ul, ol)))'));
|
|
28
37
|
const target = source.cloneNode(true) as typeof source;
|
|
29
|
-
for (let es = target.querySelectorAll('code[data-src], .math[data-src], .comment, rt, rp, .reference, .checkbox, ul, ol'),
|
|
38
|
+
for (let es = target.querySelectorAll('code[data-src], .math[data-src], .comment, rt, rp, br, .annotation, .reference, .checkbox, ul, ol'),
|
|
30
39
|
len = es.length, i = 0; i < len; ++i) {
|
|
31
40
|
const el = es[i];
|
|
32
41
|
switch (el.tagName) {
|
|
33
42
|
case 'CODE':
|
|
34
|
-
|
|
43
|
+
el.replaceWith(el.getAttribute('data-src')!);
|
|
35
44
|
continue;
|
|
36
45
|
case 'RT':
|
|
37
46
|
case 'RP':
|
|
47
|
+
case 'BR':
|
|
38
48
|
case 'UL':
|
|
39
49
|
case 'OL':
|
|
40
50
|
el.remove();
|
|
@@ -42,15 +52,13 @@ export function text(source: HTMLElement | DocumentFragment, optional = false):
|
|
|
42
52
|
}
|
|
43
53
|
switch (el.className) {
|
|
44
54
|
case 'math':
|
|
45
|
-
|
|
55
|
+
el.replaceWith(el.getAttribute('data-src')!);
|
|
46
56
|
continue;
|
|
47
57
|
case 'comment':
|
|
48
58
|
case 'checkbox':
|
|
49
|
-
|
|
50
|
-
continue;
|
|
59
|
+
case 'annotation':
|
|
51
60
|
case 'reference':
|
|
52
|
-
|
|
53
|
-
el.firstChild!.remove();
|
|
61
|
+
el.remove();
|
|
54
62
|
continue;
|
|
55
63
|
}
|
|
56
64
|
}
|
|
@@ -22,12 +22,6 @@ describe('Unit: parser/inline/extension/placeholder', () => {
|
|
|
22
22
|
assert.deepStrictEqual(inspect(parser('[^\\\na]')), undefined);
|
|
23
23
|
assert.deepStrictEqual(inspect(parser('[^ !http://host]')), undefined);
|
|
24
24
|
assert.deepStrictEqual(inspect(parser('[^a')), [['[^', 'a'], '']);
|
|
25
|
-
assert.deepStrictEqual(inspect(parser('[^a\n]')), [['[^', 'a'], '\n]']);
|
|
26
|
-
assert.deepStrictEqual(inspect(parser('[^a\n\n]')), [['[^', 'a'], '\n\n]']);
|
|
27
|
-
assert.deepStrictEqual(inspect(parser('[^a\\\n]')), [['[^', 'a'], '\\\n]']);
|
|
28
|
-
assert.deepStrictEqual(inspect(parser('[^a\\\n\\\n]')), [['[^', 'a'], '\\\n\\\n]']);
|
|
29
|
-
assert.deepStrictEqual(inspect(parser('[^a\nb]')), [['[^', 'a'], '\nb]']);
|
|
30
|
-
assert.deepStrictEqual(inspect(parser('[^a\\\nb]')), [['[^', 'a'], '\\\nb]']);
|
|
31
25
|
assert.deepStrictEqual(inspect(parser('[[]')), undefined);
|
|
32
26
|
assert.deepStrictEqual(inspect(parser('[]]')), undefined);
|
|
33
27
|
assert.deepStrictEqual(inspect(parser('[[]]')), undefined);
|
|
@@ -39,12 +33,16 @@ describe('Unit: parser/inline/extension/placeholder', () => {
|
|
|
39
33
|
it('valid', () => {
|
|
40
34
|
assert.deepStrictEqual(inspect(parser('[^a]')), [['<span class="invalid">a</span>'], '']);
|
|
41
35
|
assert.deepStrictEqual(inspect(parser('[^a b]')), [['<span class="invalid">a b</span>'], '']);
|
|
42
|
-
assert.deepStrictEqual(inspect(parser('[^a ]')), [['<span class="invalid">a
|
|
43
|
-
assert.deepStrictEqual(inspect(parser('[^a ]')), [['<span class="invalid">a
|
|
44
|
-
assert.deepStrictEqual(inspect(parser('[^a\\ ]')), [['<span class="invalid">a
|
|
45
|
-
assert.deepStrictEqual(inspect(parser('[^a\\ \\ ]')), [['<span class="invalid">a
|
|
46
|
-
assert.deepStrictEqual(inspect(parser('[^a
|
|
47
|
-
assert.deepStrictEqual(inspect(parser('[^a
|
|
36
|
+
assert.deepStrictEqual(inspect(parser('[^a ]')), [['<span class="invalid">a</span>'], '']);
|
|
37
|
+
assert.deepStrictEqual(inspect(parser('[^a ]')), [['<span class="invalid">a</span>'], '']);
|
|
38
|
+
assert.deepStrictEqual(inspect(parser('[^a\\ ]')), [['<span class="invalid">a</span>'], '']);
|
|
39
|
+
assert.deepStrictEqual(inspect(parser('[^a\\ \\ ]')), [['<span class="invalid">a</span>'], '']);
|
|
40
|
+
assert.deepStrictEqual(inspect(parser('[^a\n]')), [['<span class="invalid">a</span>'], '']);
|
|
41
|
+
assert.deepStrictEqual(inspect(parser('[^a\\\n]')), [['<span class="invalid">a</span>'], '']);
|
|
42
|
+
assert.deepStrictEqual(inspect(parser('[^a\nb]')), [['<span class="invalid">a<br>b</span>'], '']);
|
|
43
|
+
assert.deepStrictEqual(inspect(parser('[^a\\\nb]')), [['<span class="invalid">a<br>b</span>'], '']);
|
|
44
|
+
assert.deepStrictEqual(inspect(parser('[^a<wbr>]')), [['<span class="invalid">a</span>'], '']);
|
|
45
|
+
assert.deepStrictEqual(inspect(parser('[^a<wbr><wbr>]')), [['<span class="invalid">a</span>'], '']);
|
|
48
46
|
assert.deepStrictEqual(inspect(parser('[^==]')), [['<span class="invalid">==</span>'], '']);
|
|
49
47
|
assert.deepStrictEqual(inspect(parser('[^a[% b %]]')), [['<span class="invalid">a<span class="comment"><input type="checkbox"><span>[% b %]</span></span></span>'], '']);
|
|
50
48
|
assert.deepStrictEqual(inspect(parser('[^a[% b %][% c %]]')), [['<span class="invalid">a<span class="comment"><input type="checkbox"><span>[% b %]</span></span><span class="comment"><input type="checkbox"><span>[% c %]</span></span></span>'], '']);
|
|
@@ -3,25 +3,25 @@ import { union, some, syntax, validate, surround, lazy } from '../../../combinat
|
|
|
3
3
|
import { inline } from '../../inline';
|
|
4
4
|
import { str } from '../../source';
|
|
5
5
|
import { Syntax, State } from '../../context';
|
|
6
|
-
import { startTight } from '../../visibility';
|
|
6
|
+
import { startTight, trimBlankEnd } from '../../visibility';
|
|
7
7
|
import { unshift } from 'spica/array';
|
|
8
8
|
import { html, defrag } from 'typed-dom/dom';
|
|
9
9
|
|
|
10
|
-
// Don't use the symbols already used:
|
|
10
|
+
// Don't use the symbols already used: !#$%@&*+~=|
|
|
11
11
|
|
|
12
12
|
// All syntax surrounded by square brackets shouldn't contain line breaks.
|
|
13
13
|
|
|
14
|
-
export const placeholder: ExtensionParser.PlaceholderParser = lazy(() => validate(
|
|
15
|
-
str(/^\[[
|
|
14
|
+
export const placeholder: ExtensionParser.PlaceholderParser = lazy(() => validate('[', surround(
|
|
15
|
+
str(/^\[[:^|]/),
|
|
16
16
|
syntax(Syntax.placeholder, 2, 1, State.none,
|
|
17
|
-
startTight(some(union([inline]), ']', [[
|
|
17
|
+
startTight(trimBlankEnd(some(union([inline]), ']', [[']', 2]])))),
|
|
18
18
|
str(']'), false,
|
|
19
|
-
([
|
|
19
|
+
([, bs], rest) => [[
|
|
20
20
|
html('span', {
|
|
21
21
|
class: 'invalid',
|
|
22
22
|
'data-invalid-syntax': 'extension',
|
|
23
23
|
'data-invalid-type': 'syntax',
|
|
24
|
-
'data-invalid-message': `
|
|
24
|
+
'data-invalid-message': `Invalid start symbol or linebreak`,
|
|
25
25
|
}, defrag(bs)),
|
|
26
26
|
], rest],
|
|
27
27
|
([as, bs], rest) => [unshift(as, bs), rest])));
|
|
@@ -34,7 +34,7 @@ describe('Unit: parser/inline/html', () => {
|
|
|
34
34
|
assert.deepStrictEqual(inspect(parser('<bdi><wbr></bdi>')), [['<span class="invalid"><bdi><wbr></bdi></span>'], '']);
|
|
35
35
|
assert.deepStrictEqual(inspect(parser('<bdi>\n</bdi>')), [['<span class="invalid"><bdi><br></bdi></span>'], '']);
|
|
36
36
|
assert.deepStrictEqual(inspect(parser('<bdi>\na</bdi>')), [['<span class="invalid"><bdi><br>a</bdi></span>'], '']);
|
|
37
|
-
assert.deepStrictEqual(inspect(parser('<bdi>\\\na</bdi>')), [['<span class="invalid"><bdi><
|
|
37
|
+
assert.deepStrictEqual(inspect(parser('<bdi>\\\na</bdi>')), [['<span class="invalid"><bdi><br>a</bdi></span>'], '']);
|
|
38
38
|
assert.deepStrictEqual(inspect(parser('<bdi>a')), [['<span class="invalid"><bdi>a</span>'], '']);
|
|
39
39
|
assert.deepStrictEqual(inspect(parser('<bdi>a</BDO>')), [['<span class="invalid"><bdi>a</BDO></span>'], '']);
|
|
40
40
|
assert.deepStrictEqual(inspect(parser('<BDI>a</BDI>')), [['<span class="invalid"><BDI>a</BDI></span>'], '']);
|
|
@@ -5,7 +5,7 @@ import { str } from '../source';
|
|
|
5
5
|
import { Syntax, State } from '../context';
|
|
6
6
|
import { isStartLooseNodes, blankWith } from '../visibility';
|
|
7
7
|
import { memoize } from 'spica/memoize';
|
|
8
|
-
import {
|
|
8
|
+
import { Clock } from 'spica/clock';
|
|
9
9
|
import { unshift, push, splice } from 'spica/array';
|
|
10
10
|
import { html as h, defrag } from 'typed-dom/dom';
|
|
11
11
|
|
|
@@ -59,7 +59,7 @@ export const html: HTMLParser = lazy(() => validate('<', validate(/^<[a-z]+(?=[^
|
|
|
59
59
|
([as, bs = []], rest) =>
|
|
60
60
|
[[elem(tag, as, bs, [])], rest]),
|
|
61
61
|
([, tag]) => tag,
|
|
62
|
-
new
|
|
62
|
+
new Clock(10000))),
|
|
63
63
|
])))));
|
|
64
64
|
|
|
65
65
|
export const attribute: HTMLParser.AttributeParser = union([
|
|
@@ -23,7 +23,7 @@ describe('Unit: parser/inline/insertion', () => {
|
|
|
23
23
|
assert.deepStrictEqual(inspect(parser('++ a ++')), [['<ins> a </ins>'], '']);
|
|
24
24
|
assert.deepStrictEqual(inspect(parser('++ a ++')), [['<ins> a </ins>'], '']);
|
|
25
25
|
assert.deepStrictEqual(inspect(parser('++\na++')), [['<ins><br>a</ins>'], '']);
|
|
26
|
-
assert.deepStrictEqual(inspect(parser('++\\\na++')), [['<ins><
|
|
26
|
+
assert.deepStrictEqual(inspect(parser('++\\\na++')), [['<ins><br>a</ins>'], '']);
|
|
27
27
|
assert.deepStrictEqual(inspect(parser('++<wbr>a++')), [['<ins><wbr>a</ins>'], '']);
|
|
28
28
|
assert.deepStrictEqual(inspect(parser('++a ++')), [['<ins>a </ins>'], '']);
|
|
29
29
|
assert.deepStrictEqual(inspect(parser('++a \n ++')), [['<ins>a </ins>'], '']);
|
|
@@ -31,7 +31,7 @@ describe('Unit: parser/inline/insertion', () => {
|
|
|
31
31
|
assert.deepStrictEqual(inspect(parser('++a\n ++')), [['<ins>a </ins>'], '']);
|
|
32
32
|
assert.deepStrictEqual(inspect(parser('++a\n<wbr>++')), [['<ins>a<wbr></ins>'], '']);
|
|
33
33
|
assert.deepStrictEqual(inspect(parser('++a\nb++')), [['<ins>a<br>b</ins>'], '']);
|
|
34
|
-
assert.deepStrictEqual(inspect(parser('++a\\\nb++')), [['<ins>a<
|
|
34
|
+
assert.deepStrictEqual(inspect(parser('++a\\\nb++')), [['<ins>a<br>b</ins>'], '']);
|
|
35
35
|
assert.deepStrictEqual(inspect(parser('++\\+++')), [['<ins>+</ins>'], '']);
|
|
36
36
|
assert.deepStrictEqual(inspect(parser('++a+++')), [['<ins>a</ins>'], '+']);
|
|
37
37
|
});
|