securemark 0.265.0 → 0.267.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 +9 -0
- package/README.md +1 -1
- package/dist/index.js +49 -42
- package/index.d.ts +7 -7
- package/markdown.d.ts +4 -4
- package/package.json +1 -1
- package/src/parser/api/bind.test.ts +17 -17
- package/src/parser/api/bind.ts +1 -0
- package/src/parser/api/parse.test.ts +6 -8
- package/src/parser/api/parse.ts +2 -1
- package/src/parser/block/dlist.test.ts +34 -34
- package/src/parser/block/extension/aside.test.ts +3 -3
- package/src/parser/block/extension/aside.ts +2 -2
- package/src/parser/block/extension/figure.test.ts +2 -2
- package/src/parser/block/heading.test.ts +47 -47
- package/src/parser/block/olist.test.ts +29 -29
- package/src/parser/block/pagebreak.test.ts +31 -0
- package/src/parser/block/pagebreak.ts +7 -0
- package/src/parser/block/reply/cite.test.ts +1 -1
- package/src/parser/block/ulist.test.ts +25 -25
- package/src/parser/block.ts +3 -3
- package/src/parser/inline/autolink/account.ts +3 -5
- package/src/parser/inline/autolink/anchor.test.ts +2 -2
- package/src/parser/inline/autolink/anchor.ts +4 -3
- package/src/parser/inline/autolink/channel.test.ts +0 -2
- package/src/parser/inline/autolink/channel.ts +0 -1
- package/src/parser/inline/autolink/hashnum.test.ts +1 -1
- package/src/parser/inline/autolink/hashtag.test.ts +2 -6
- package/src/parser/inline/autolink/hashtag.ts +7 -20
- package/src/parser/inline/extension/index.test.ts +48 -48
- package/src/parser/inline/extension/index.ts +1 -1
- package/src/parser/inline/extension/indexee.ts +15 -11
- package/src/parser/inline/extension/indexer.ts +1 -1
- package/src/parser/inline/link.ts +1 -0
- package/src/parser/inline/mark.test.ts +9 -9
- package/src/parser/inline/mark.ts +1 -1
- package/src/parser/inline.test.ts +9 -6
- package/src/parser/processor/figure.test.ts +19 -19
- package/src/parser/processor/footnote.test.ts +66 -66
- package/src/parser/processor/footnote.ts +11 -11
- package/src/util/toc.test.ts +28 -28
- package/src/parser/block/horizontalrule.test.ts +0 -31
- package/src/parser/block/horizontalrule.ts +0 -7
|
@@ -34,9 +34,6 @@ describe('Unit: parser/inline/autolink/hashtag', () => {
|
|
|
34
34
|
assert.deepStrictEqual(inspect(parser('a##1')), [['a##1'], '']);
|
|
35
35
|
assert.deepStrictEqual(inspect(parser('a##b')), [['a##b'], '']);
|
|
36
36
|
assert.deepStrictEqual(inspect(parser('あ#b')), [['あ#b'], '']);
|
|
37
|
-
assert.deepStrictEqual(inspect(parser(`#${'1'.repeat(127)}_`)), [[`#${'1'.repeat(127)}`], '_']);
|
|
38
|
-
assert.deepStrictEqual(inspect(parser(`#${'1'.repeat(127)}_a`)), [[`#${'1'.repeat(127)}`], '_a']);
|
|
39
|
-
assert.deepStrictEqual(inspect(parser(`#${'1'.repeat(127)}_'a`)), [[`#${'1'.repeat(127)}`], `_'a`]);
|
|
40
37
|
assert.deepStrictEqual(inspect(parser(' #a')), undefined);
|
|
41
38
|
});
|
|
42
39
|
|
|
@@ -51,15 +48,13 @@ describe('Unit: parser/inline/autolink/hashtag', () => {
|
|
|
51
48
|
assert.deepStrictEqual(inspect(parser('#a(b')), [['<a class="hashtag" href="/hashtags/a">#a</a>'], '(b']);
|
|
52
49
|
assert.deepStrictEqual(inspect(parser('#a(b)')), [['<a class="hashtag" href="/hashtags/a">#a</a>'], '(b)']);
|
|
53
50
|
assert.deepStrictEqual(inspect(parser('#a_')), [['<a class="hashtag" href="/hashtags/a">#a</a>'], '_']);
|
|
54
|
-
assert.deepStrictEqual(inspect(parser('#a__b')), [['<a class="hashtag" href="/hashtags/a">#a</a>'], '__b']);
|
|
55
51
|
assert.deepStrictEqual(inspect(parser('#a_b')), [['<a class="hashtag" href="/hashtags/a_b">#a_b</a>'], '']);
|
|
52
|
+
assert.deepStrictEqual(inspect(parser('#a__b')), [['<a class="hashtag" href="/hashtags/a">#a</a>'], '__b']);
|
|
56
53
|
assert.deepStrictEqual(inspect(parser('#あ')), [['<a class="hashtag" href="/hashtags/あ">#あ</a>'], '']);
|
|
57
54
|
assert.deepStrictEqual(inspect(parser('#👩')), [['<a class="hashtag" href="/hashtags/👩">#👩</a>'], '']);
|
|
58
55
|
assert.deepStrictEqual(inspect(parser('#1a')), [['<a class="hashtag" href="/hashtags/1a">#1a</a>'], '']);
|
|
59
56
|
assert.deepStrictEqual(inspect(parser('#1あ')), [['<a class="hashtag" href="/hashtags/1あ">#1あ</a>'], '']);
|
|
60
57
|
assert.deepStrictEqual(inspect(parser('#1👩')), [['<a class="hashtag" href="/hashtags/1👩">#1👩</a>'], '']);
|
|
61
|
-
assert.deepStrictEqual(inspect(parser('#domain/a')), [['<a class="hashtag" href="https://domain/hashtags/a" target="_blank">#domain/a</a>'], '']);
|
|
62
|
-
assert.deepStrictEqual(inspect(parser('#domain.co.jp/a')), [['<a class="hashtag" href="https://domain.co.jp/hashtags/a" target="_blank">#domain.co.jp/a</a>'], '']);
|
|
63
58
|
assert.deepStrictEqual(inspect(parser(`#'0`)), [[`<a class="hashtag" href="/hashtags/'0">#'0</a>`], '']);
|
|
64
59
|
assert.deepStrictEqual(inspect(parser(`#'00`)), [[`<a class="hashtag" href="/hashtags/'00">#'00</a>`], '']);
|
|
65
60
|
assert.deepStrictEqual(inspect(parser(`#1'`)), [[`<a class="hashtag" href="/hashtags/1'">#1'</a>`], '']);
|
|
@@ -69,6 +64,7 @@ describe('Unit: parser/inline/autolink/hashtag', () => {
|
|
|
69
64
|
assert.deepStrictEqual(inspect(parser(`#a'b`)), [[`<a class="hashtag" href="/hashtags/a'b">#a'b</a>`], '']);
|
|
70
65
|
assert.deepStrictEqual(inspect(parser(`#a'_b`)), [[`<a class="hashtag" href="/hashtags/a'_b">#a'_b</a>`], '']);
|
|
71
66
|
assert.deepStrictEqual(inspect(parser(`#a_'b`)), [[`<a class="hashtag" href="/hashtags/a_'b">#a_'b</a>`], '']);
|
|
67
|
+
assert.deepStrictEqual(inspect(parser(`#${'1'.repeat(15)}a`)), [[`<a class="hashtag" href="/hashtags/${'1'.repeat(15)}a">#${'1'.repeat(15)}a</a>`], '']);
|
|
72
68
|
});
|
|
73
69
|
|
|
74
70
|
});
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { AutolinkParser } from '../../inline';
|
|
2
|
-
import { union,
|
|
2
|
+
import { union, constraint, rewrite, open, convert, fmap, lazy } from '../../../combinator';
|
|
3
3
|
import { unsafelink } from '../link';
|
|
4
4
|
import { str } from '../../source';
|
|
5
5
|
import { State } from '../../context';
|
|
@@ -14,24 +14,11 @@ export const hashtag: AutolinkParser.HashtagParser = lazy(() => fmap(rewrite(
|
|
|
14
14
|
constraint(State.shortcut, false,
|
|
15
15
|
open(
|
|
16
16
|
'#',
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
verify(
|
|
22
|
-
str(new RegExp([
|
|
23
|
-
/^(?=(?:[0-9]{1,127}_?)?(?:[^\d\p{C}\p{S}\p{P}\s]|emoji|'))/u.source,
|
|
24
|
-
/(?:[^\p{C}\p{S}\p{P}\s]|emoji|(?<!')'|_(?=[^\p{C}\p{S}\p{P}\s]|emoji|')){1,128}/u.source,
|
|
25
|
-
/(?!_?(?:[^\p{C}\p{S}\p{P}\s]|emoji|(?<!')'))/u.source,
|
|
26
|
-
].join('').replace(/emoji/g, emoji), 'u')),
|
|
27
|
-
([source]) => source.length <= 128),
|
|
28
|
-
]))),
|
|
17
|
+
str(new RegExp([
|
|
18
|
+
/^(?=(?:[0-9]{1,15})?(?:[^\d\p{C}\p{S}\p{P}\s]|emoji|'))/u.source,
|
|
19
|
+
/(?:[^\p{C}\p{S}\p{P}\s]|emoji|(?<!')'|_(?=[^\p{C}\p{S}\p{P}\s]|emoji|'))+/u.source,
|
|
20
|
+
].join('').replace(/emoji/g, emoji), 'u')))),
|
|
29
21
|
convert(
|
|
30
|
-
source =>
|
|
31
|
-
`[${source}]{ ${
|
|
32
|
-
source.includes('/')
|
|
33
|
-
? `https://${source.slice(1).replace('/', '/hashtags/')}`
|
|
34
|
-
: `/hashtags/${source.slice(1)}`
|
|
35
|
-
} }`,
|
|
22
|
+
source => `[${source}]{ ${`/hashtags/${source.slice(1)}`} }`,
|
|
36
23
|
union([unsafelink]))),
|
|
37
|
-
([el]) => [define(el, { class: 'hashtag' }
|
|
24
|
+
([el]) => [define(el, { class: 'hashtag' })]));
|
|
@@ -35,59 +35,59 @@ describe('Unit: parser/inline/extension/index', () => {
|
|
|
35
35
|
});
|
|
36
36
|
|
|
37
37
|
it('basic', () => {
|
|
38
|
-
assert.deepStrictEqual(inspect(parser('[#a]')), [['<a class="index" href="#index
|
|
39
|
-
assert.deepStrictEqual(inspect(parser('[#a ]')), [['<a class="index" href="#index
|
|
40
|
-
assert.deepStrictEqual(inspect(parser('[#a ]')), [['<a class="index" href="#index
|
|
41
|
-
assert.deepStrictEqual(inspect(parser('[#a b]')), [['<a class="index" href="#index
|
|
42
|
-
assert.deepStrictEqual(inspect(parser('[#a b]')), [['<a class="index" href="#index
|
|
43
|
-
assert.deepStrictEqual(inspect(parser('[#a \\ ]')), [['<a class="index" href="#index
|
|
44
|
-
assert.deepStrictEqual(inspect(parser('[#a ]')), [['<a class="index" href="#index
|
|
45
|
-
assert.deepStrictEqual(inspect(parser('[#a <wbr>]')), [['<a class="index" href="#index
|
|
46
|
-
assert.deepStrictEqual(inspect(parser('[#a [% b %]]')), [['<a class="index" href="#index
|
|
47
|
-
assert.deepStrictEqual(inspect(parser('[#a\\ ]')), [['<a class="index" href="#index
|
|
48
|
-
assert.deepStrictEqual(inspect(parser('[#a\\ b]')), [['<a class="index" href="#index
|
|
49
|
-
assert.deepStrictEqual(inspect(parser('[#[]]')), [['<a class="index" href="#index
|
|
50
|
-
assert.deepStrictEqual(inspect(parser('[#\\]]')), [['<a class="index" href="#index
|
|
51
|
-
assert.deepStrictEqual(inspect(parser('[#\\\\]')), [['<a class="index" href="#index
|
|
52
|
-
assert.deepStrictEqual(inspect(parser('[#A]')), [['<a class="index" href="#index
|
|
53
|
-
assert.deepStrictEqual(inspect(parser('[#==]')), [['<a class="index" href="#index
|
|
54
|
-
assert.deepStrictEqual(inspect(parser('[#_A_]')), [['<a class="index" href="#index
|
|
55
|
-
assert.deepStrictEqual(inspect(parser('[#`A`]')), [['<a class="index" href="#index
|
|
56
|
-
assert.deepStrictEqual(inspect(parser('[#${A}$]')), [['<a class="index" href="#index
|
|
57
|
-
assert.deepStrictEqual(inspect(parser('[#[A](a)]')), [['<a class="index" href="#index
|
|
58
|
-
assert.deepStrictEqual(inspect(parser('[#[]{a}]')), [['<a class="index" href="#index
|
|
59
|
-
assert.deepStrictEqual(inspect(parser('[#![]{a}]')), [['<a class="index" href="#index
|
|
60
|
-
assert.deepStrictEqual(inspect(parser('[#@a]')), [['<a class="index" href="#index
|
|
61
|
-
assert.deepStrictEqual(inspect(parser('[#http://host]')), [['<a class="index" href="#index
|
|
62
|
-
assert.deepStrictEqual(inspect(parser('[#!http://host]')), [['<a class="index" href="#index
|
|
38
|
+
assert.deepStrictEqual(inspect(parser('[#a]')), [['<a class="index" href="#index::a">a</a>'], '']);
|
|
39
|
+
assert.deepStrictEqual(inspect(parser('[#a ]')), [['<a class="index" href="#index::a">a</a>'], '']);
|
|
40
|
+
assert.deepStrictEqual(inspect(parser('[#a ]')), [['<a class="index" href="#index::a">a</a>'], '']);
|
|
41
|
+
assert.deepStrictEqual(inspect(parser('[#a b]')), [['<a class="index" href="#index::a_b">a b</a>'], '']);
|
|
42
|
+
assert.deepStrictEqual(inspect(parser('[#a b]')), [['<a class="index" href="#index::a_b">a b</a>'], '']);
|
|
43
|
+
assert.deepStrictEqual(inspect(parser('[#a \\ ]')), [['<a class="index" href="#index::a">a</a>'], '']);
|
|
44
|
+
assert.deepStrictEqual(inspect(parser('[#a ]')), [['<a class="index" href="#index::a">a</a>'], '']);
|
|
45
|
+
assert.deepStrictEqual(inspect(parser('[#a <wbr>]')), [['<a class="index" href="#index::a">a</a>'], '']);
|
|
46
|
+
assert.deepStrictEqual(inspect(parser('[#a [% b %]]')), [['<a class="index" href="#index::a">a <span class="comment"><input type="checkbox"><span>[% b %]</span></span></a>'], '']);
|
|
47
|
+
assert.deepStrictEqual(inspect(parser('[#a\\ ]')), [['<a class="index" href="#index::a">a</a>'], '']);
|
|
48
|
+
assert.deepStrictEqual(inspect(parser('[#a\\ b]')), [['<a class="index" href="#index::a_b">a b</a>'], '']);
|
|
49
|
+
assert.deepStrictEqual(inspect(parser('[#[]]')), [['<a class="index" href="#index::[]">[]</a>'], '']);
|
|
50
|
+
assert.deepStrictEqual(inspect(parser('[#\\]]')), [['<a class="index" href="#index::]">]</a>'], '']);
|
|
51
|
+
assert.deepStrictEqual(inspect(parser('[#\\\\]')), [['<a class="index" href="#index::\\">\\</a>'], '']);
|
|
52
|
+
assert.deepStrictEqual(inspect(parser('[#A]')), [['<a class="index" href="#index::A">A</a>'], '']);
|
|
53
|
+
assert.deepStrictEqual(inspect(parser('[#==]')), [['<a class="index" href="#index::==">==</a>'], '']);
|
|
54
|
+
assert.deepStrictEqual(inspect(parser('[#_A_]')), [['<a class="index" href="#index::A"><em>A</em></a>'], '']);
|
|
55
|
+
assert.deepStrictEqual(inspect(parser('[#`A`]')), [['<a class="index" href="#index::`A`"><code data-src="`A`">A</code></a>'], '']);
|
|
56
|
+
assert.deepStrictEqual(inspect(parser('[#${A}$]')), [['<a class="index" href="#index::${A}$"><span class="math" translate="no" data-src="${A}$">${A}$</span></a>'], '']);
|
|
57
|
+
assert.deepStrictEqual(inspect(parser('[#[A](a)]')), [['<a class="index" href="#index::A"><ruby>A<rp>(</rp><rt>a</rt><rp>)</rp></ruby></a>'], '']);
|
|
58
|
+
assert.deepStrictEqual(inspect(parser('[#[]{a}]')), [['<a class="index" href="#index::[]{a}">[]{a}</a>'], '']);
|
|
59
|
+
assert.deepStrictEqual(inspect(parser('[#![]{a}]')), [['<a class="index" href="#index::![]{a}">![]{a}</a>'], '']);
|
|
60
|
+
assert.deepStrictEqual(inspect(parser('[#@a]')), [['<a class="index" href="#index::@a">@a</a>'], '']);
|
|
61
|
+
assert.deepStrictEqual(inspect(parser('[#http://host]')), [['<a class="index" href="#index::http://host">http://host</a>'], '']);
|
|
62
|
+
assert.deepStrictEqual(inspect(parser('[#!http://host]')), [['<a class="index" href="#index::!http://host">!http://host</a>'], '']);
|
|
63
63
|
assert.deepStrictEqual(inspect(parser('[#[% %]]')), [['<a class="index"><span class="comment"><input type="checkbox"><span>[% %]</span></span></a>'], '']);
|
|
64
64
|
assert.deepStrictEqual(inspect(parser('[#[% a %]]')), [['<a class="index"><span class="comment"><input type="checkbox"><span>[% a %]</span></span></a>'], '']);
|
|
65
|
-
assert.deepStrictEqual(inspect(parser('[#a((b))]')), [['<a class="index" href="#index
|
|
66
|
-
assert.deepStrictEqual(inspect(parser('[#a[[b]]]')), [['<a class="index" href="#index
|
|
65
|
+
assert.deepStrictEqual(inspect(parser('[#a((b))]')), [['<a class="index" href="#index::a((b))">a<span class="paren">((b))</span></a>'], '']);
|
|
66
|
+
assert.deepStrictEqual(inspect(parser('[#a[[b]]]')), [['<a class="index" href="#index::a[[b]]">a[[b]]</a>'], '']);
|
|
67
67
|
});
|
|
68
68
|
|
|
69
69
|
it('indexer', () => {
|
|
70
|
-
assert.deepStrictEqual(inspect(parser('[#|]')), [['<a class="index" href="#index
|
|
71
|
-
assert.deepStrictEqual(inspect(parser('[#|b]')), [['<a class="index" href="#index
|
|
72
|
-
assert.deepStrictEqual(inspect(parser('[#a|]')), [['<a class="index" href="#index
|
|
73
|
-
assert.deepStrictEqual(inspect(parser('[#a| ]')), [['<a class="index" href="#index
|
|
74
|
-
assert.deepStrictEqual(inspect(parser('[#a|\\ ]')), [['<a class="index" href="#index
|
|
75
|
-
assert.deepStrictEqual(inspect(parser('[#a|b]')), [['<a class="index" href="#index
|
|
76
|
-
assert.deepStrictEqual(inspect(parser('[#a|b ]')), [['<a class="index" href="#index
|
|
77
|
-
assert.deepStrictEqual(inspect(parser('[#a|b ]')), [['<a class="index" href="#index
|
|
78
|
-
assert.deepStrictEqual(inspect(parser('[#a|\\b]')), [['<a class="index" href="#index
|
|
79
|
-
assert.deepStrictEqual(inspect(parser('[#a|_b_]')), [['<a class="index" href="#index
|
|
80
|
-
assert.deepStrictEqual(inspect(parser('[#a|b c]')), [['<a class="index" href="#index
|
|
81
|
-
assert.deepStrictEqual(inspect(parser('[#a|b c]')), [['<a class="index" href="#index
|
|
82
|
-
assert.deepStrictEqual(inspect(parser('[#a|[]]')), [['<a class="index" href="#index
|
|
83
|
-
assert.deepStrictEqual(inspect(parser('[#a|©]')), [['<a class="index" href="#index
|
|
84
|
-
assert.deepStrictEqual(inspect(parser('[#a |b]')), [['<a class="index" href="#index
|
|
85
|
-
assert.deepStrictEqual(inspect(parser('[#a |b]')), [['<a class="index" href="#index
|
|
86
|
-
assert.deepStrictEqual(inspect(parser('[#a \\ |b]')), [['<a class="index" href="#index
|
|
87
|
-
assert.deepStrictEqual(inspect(parser('[#a |b]')), [['<a class="index" href="#index
|
|
88
|
-
assert.deepStrictEqual(inspect(parser('[#a <wbr>|b]')), [['<a class="index" href="#index
|
|
89
|
-
assert.deepStrictEqual(inspect(parser('[#a [% b %]|c]')), [['<a class="index" href="#index
|
|
90
|
-
assert.deepStrictEqual(inspect(parser('[#a\\ |b]')), [['<a class="index" href="#index
|
|
70
|
+
assert.deepStrictEqual(inspect(parser('[#|]')), [['<a class="index" href="#index::|">|</a>'], '']);
|
|
71
|
+
assert.deepStrictEqual(inspect(parser('[#|b]')), [['<a class="index" href="#index::|b">|b</a>'], '']);
|
|
72
|
+
assert.deepStrictEqual(inspect(parser('[#a|]')), [['<a class="index" href="#index::a|">a|</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>'], '']);
|
|
91
91
|
});
|
|
92
92
|
|
|
93
93
|
});
|
|
@@ -35,7 +35,7 @@ const signature: IndexParser.SignatureParser = lazy(() => creation(fmap(open(
|
|
|
35
35
|
'|',
|
|
36
36
|
startTight(some(union([bracket, txt]), ']'))),
|
|
37
37
|
ns => [
|
|
38
|
-
html('span', { class: 'indexer', 'data-index': identity(ns.join(''))
|
|
38
|
+
html('span', { class: 'indexer', 'data-index': identity(undefined, ns.join(''))!.slice(7) }),
|
|
39
39
|
])));
|
|
40
40
|
|
|
41
41
|
const bracket: IndexParser.SignatureParser.BracketParser = lazy(() => creation(union([
|
|
@@ -5,26 +5,30 @@ import { define } from 'typed-dom/dom';
|
|
|
5
5
|
|
|
6
6
|
export function indexee<P extends Parser<unknown, MarkdownParser.Context>>(parser: P, optional?: boolean): P;
|
|
7
7
|
export function indexee(parser: Parser<HTMLElement, MarkdownParser.Context>, optional?: boolean): Parser<HTMLElement> {
|
|
8
|
-
return fmap(parser, ([el], _, { id }) => [define(el, { id: id
|
|
8
|
+
return fmap(parser, ([el], _, { id }) => [define(el, { id: identity(id, text(el, optional)) })]);
|
|
9
9
|
}
|
|
10
10
|
|
|
11
|
-
export function identity(text: string, name: 'index' | 'mark' = 'index'): string {
|
|
11
|
+
export function identity(id: string | undefined, text: string, name: 'index' | 'mark' = 'index'): string | undefined {
|
|
12
|
+
assert(!id?.match(/[^0-9a-z-]/i));
|
|
12
13
|
assert(!text.includes('\n'));
|
|
14
|
+
if (id === '') return undefined;
|
|
13
15
|
text &&= text.trim().replace(/\s+/g, '_');
|
|
14
|
-
if (text
|
|
16
|
+
if (text === '') return undefined;
|
|
17
|
+
if (text.length <= 100) return `${name}:${id ?? ''}:${text}`;
|
|
15
18
|
switch (name) {
|
|
16
19
|
case 'index':
|
|
17
|
-
return `${name}:${text.slice(0, 97)}...`;
|
|
20
|
+
return `${name}:${id ?? ''}:${text.slice(0, 97)}...`;
|
|
18
21
|
case 'mark':
|
|
19
|
-
return `${name}:${text.slice(0, 50)}...${text.slice(-47)}`;
|
|
22
|
+
return `${name}:${id ?? ''}:${text.slice(0, 50)}...${text.slice(-47)}`;
|
|
20
23
|
}
|
|
24
|
+
assert(false);
|
|
21
25
|
}
|
|
22
|
-
assert(identity('0'.repeat(100 - 1) + 1)
|
|
23
|
-
assert(identity('0'.repeat(100) + 1)
|
|
24
|
-
assert(identity('0'.repeat(200) + 1)
|
|
25
|
-
assert(identity('0'.repeat(100 - 1) + 1, 'mark')
|
|
26
|
-
assert(identity('0'.repeat(100) + 1, 'mark')
|
|
27
|
-
assert(identity('0'.repeat(200) + 1, 'mark')
|
|
26
|
+
assert(identity(undefined, '0'.repeat(100 - 1) + 1)!.slice(7) === '0'.repeat(100 - 1) + 1);
|
|
27
|
+
assert(identity(undefined, '0'.repeat(100) + 1)!.slice(7) === '0'.repeat(97) + '...');
|
|
28
|
+
assert(identity(undefined, '0'.repeat(200) + 1)!.slice(7) === '0'.repeat(97) + '...');
|
|
29
|
+
assert(identity(undefined, '0'.repeat(100 - 1) + 1, 'mark')!.slice(6) === '0'.repeat(100 - 1) + 1);
|
|
30
|
+
assert(identity(undefined, '0'.repeat(100) + 1, 'mark')!.slice(6) === '0'.repeat(50) + '...' + '0'.repeat(47 - 1) + 1);
|
|
31
|
+
assert(identity(undefined, '0'.repeat(200) + 1, 'mark')!.slice(6) === '0'.repeat(50) + '...' + '0'.repeat(47 - 1) + 1);
|
|
28
32
|
|
|
29
33
|
export function text(source: HTMLElement | DocumentFragment, optional = false): string {
|
|
30
34
|
assert(source instanceof DocumentFragment || !source.matches('.indexer'));
|
|
@@ -15,5 +15,5 @@ export const indexer: ExtensionParser.IndexerParser = creation(fmap(verify(surro
|
|
|
15
15
|
// Indexer is invisible but invalids must be visible.
|
|
16
16
|
([el]) => el.getElementsByClassName('invalid').length === 0),
|
|
17
17
|
([el]) => [
|
|
18
|
-
html('span', { class: 'indexer', 'data-index': el.getAttribute('href')!.slice(
|
|
18
|
+
html('span', { class: 'indexer', 'data-index': el.getAttribute('href')!.slice(1).replace(/^\w+:\w*:/, '') }),
|
|
19
19
|
]));
|
|
@@ -180,6 +180,7 @@ export function resolve(uri: string, host: URL | Location, source: URL | Locatio
|
|
|
180
180
|
case uri.slice(0, 2) === '^/':
|
|
181
181
|
const last = host.pathname.slice(host.pathname.lastIndexOf('/') + 1);
|
|
182
182
|
return last.includes('.') // isFile
|
|
183
|
+
// Exclude ISO 6709.
|
|
183
184
|
&& /^[0-9]*[a-z][0-9a-z]*$/i.test(last.slice(last.lastIndexOf('.') + 1))
|
|
184
185
|
? `${host.pathname.slice(0, -last.length)}${uri.slice(2)}`
|
|
185
186
|
: `${host.pathname.replace(/\/?$/, '/')}${uri.slice(2)}`;
|
|
@@ -29,18 +29,18 @@ describe('Unit: parser/inline/mark', () => {
|
|
|
29
29
|
});
|
|
30
30
|
|
|
31
31
|
it('basic', () => {
|
|
32
|
-
assert.deepStrictEqual(inspect(parser('==a==')), [['<mark id="mark
|
|
33
|
-
assert.deepStrictEqual(inspect(parser('==a=b==')), [['<mark id="mark
|
|
34
|
-
assert.deepStrictEqual(inspect(parser('==\\===')), [['<mark id="mark
|
|
35
|
-
assert.deepStrictEqual(inspect(parser('==a===')), [['<mark id="mark
|
|
32
|
+
assert.deepStrictEqual(inspect(parser('==a==')), [['<mark id="mark::a">a</mark>', '<a href="#mark::a"></a>'], '']);
|
|
33
|
+
assert.deepStrictEqual(inspect(parser('==a=b==')), [['<mark id="mark::a=b">a=b</mark>', '<a href="#mark::a=b"></a>'], '']);
|
|
34
|
+
assert.deepStrictEqual(inspect(parser('==\\===')), [['<mark id="mark::=">=</mark>', '<a href="#mark::="></a>'], '']);
|
|
35
|
+
assert.deepStrictEqual(inspect(parser('==a===')), [['<mark id="mark::a">a</mark>', '<a href="#mark::a"></a>'], '=']);
|
|
36
36
|
});
|
|
37
37
|
|
|
38
38
|
it('nest', () => {
|
|
39
|
-
assert.deepStrictEqual(inspect(parser('==a ==b====')), [['<mark id="mark
|
|
40
|
-
assert.deepStrictEqual(inspect(parser('==a\\ ==b====')), [['<mark id="mark
|
|
41
|
-
assert.deepStrictEqual(inspect(parser('==a	==b====')), [['<mark id="mark
|
|
42
|
-
assert.deepStrictEqual(inspect(parser('==a<wbr>==b====')), [['<mark id="mark
|
|
43
|
-
assert.deepStrictEqual(inspect(parser('==_==a==_==')), [['<mark id="mark
|
|
39
|
+
assert.deepStrictEqual(inspect(parser('==a ==b====')), [['<mark id="mark::a_b">a <mark id="mark::b">b</mark><a href="#mark::b"></a></mark>', '<a href="#mark::a_b"></a>'], '']);
|
|
40
|
+
assert.deepStrictEqual(inspect(parser('==a\\ ==b====')), [['<mark id="mark::a_b">a <mark id="mark::b">b</mark><a href="#mark::b"></a></mark>', '<a href="#mark::a_b"></a>'], '']);
|
|
41
|
+
assert.deepStrictEqual(inspect(parser('==a	==b====')), [['<mark id="mark::a_b">a\t<mark id="mark::b">b</mark><a href="#mark::b"></a></mark>', '<a href="#mark::a_b"></a>'], '']);
|
|
42
|
+
assert.deepStrictEqual(inspect(parser('==a<wbr>==b====')), [['<mark id="mark::ab">a<wbr><mark id="mark::b">b</mark><a href="#mark::b"></a></mark>', '<a href="#mark::ab"></a>'], '']);
|
|
43
|
+
assert.deepStrictEqual(inspect(parser('==_==a==_==')), [['<mark id="mark::a"><em><mark id="mark::a">a</mark><a href="#mark::a"></a></em></mark>', '<a href="#mark::a"></a>'], '']);
|
|
44
44
|
});
|
|
45
45
|
|
|
46
46
|
});
|
|
@@ -19,7 +19,7 @@ export const mark: MarkParser = lazy(() => surround(
|
|
|
19
19
|
str('=='), false,
|
|
20
20
|
([, bs], rest, { id }) => {
|
|
21
21
|
const el = html('mark', defrag(bs));
|
|
22
|
-
define(el, { id: id
|
|
22
|
+
define(el, { id: identity(id, text(el), 'mark') });
|
|
23
23
|
return [[el, html('a', { href: el.id ? `#${el.id}` : undefined })], rest];
|
|
24
24
|
},
|
|
25
25
|
([as, bs], rest) => [unshift(as, bs), rest]));
|
|
@@ -32,7 +32,7 @@ describe('Unit: parser/inline', () => {
|
|
|
32
32
|
assert.deepStrictEqual(inspect(parser('++\na\n++\n~~\nb\n~~\nc')), [['<ins><br>a</ins>', '<br>', '<del><br>b</del>', '<br>', 'c'], '']);
|
|
33
33
|
assert.deepStrictEqual(inspect(parser('``a`')), [['``', 'a', '`'], '']);
|
|
34
34
|
assert.deepStrictEqual(inspect(parser('[@a]')), [['[', '<a class="account" href="/@a">@a</a>', ']'], '']);
|
|
35
|
-
assert.deepStrictEqual(inspect(parser('[#1][#2]')), [['<a class="index" href="#index
|
|
35
|
+
assert.deepStrictEqual(inspect(parser('[#1][#2]')), [['<a class="index" href="#index::1">1</a>', '<a class="index" href="#index::2">2</a>'], '']);
|
|
36
36
|
assert.deepStrictEqual(inspect(parser('[$1]')), [['[', '$', '1', ']'], '']);
|
|
37
37
|
assert.deepStrictEqual(inspect(parser('[$1-2]')), [['[', '$', '1-2', ']'], '']);
|
|
38
38
|
assert.deepStrictEqual(inspect(parser('[$-1][$-2]')), [['<a class="label" data-label="$-1">$-1</a>', '<a class="label" data-label="$-2">$-2</a>'], '']);
|
|
@@ -44,8 +44,8 @@ describe('Unit: parser/inline', () => {
|
|
|
44
44
|
assert.deepStrictEqual(inspect(parser('[[#-1]]{b}')), [['<sup class="reference"><span>#-1</span></sup>', '<a class="url" href="b">b</a>'], '']);
|
|
45
45
|
assert.deepStrictEqual(inspect(parser('[[#-1]](b)')), [['<sup class="reference"><span>#-1</span></sup>', '(', 'b', ')'], '']);
|
|
46
46
|
assert.deepStrictEqual(inspect(parser('[[#-1]a]{b}')), [['<a class="link" href="b">[#-1]a</a>'], '']);
|
|
47
|
-
assert.deepStrictEqual(inspect(parser('[[#-1]a](b)')), [['[', '<a class="index" href="#index
|
|
48
|
-
assert.deepStrictEqual(inspect(parser('[#a]{b}')), [['<a class="index" href="#index
|
|
47
|
+
assert.deepStrictEqual(inspect(parser('[[#-1]a](b)')), [['[', '<a class="index" href="#index::-1">-1</a>', 'a', ']', '(', 'b', ')'], '']);
|
|
48
|
+
assert.deepStrictEqual(inspect(parser('[#a]{b}')), [['<a class="index" href="#index::a">a</a>', '<a class="url" href="b">b</a>'], '']);
|
|
49
49
|
assert.deepStrictEqual(inspect(parser('[@a]{b}')), [['<a class="link" href="b">@a</a>'], '']);
|
|
50
50
|
assert.deepStrictEqual(inspect(parser('[http://host]{http://evil}')), [['<a class="invalid">http://host</a>'], '']);
|
|
51
51
|
assert.deepStrictEqual(inspect(parser('[http://host]{http://host}')), [['<a class="invalid">http://host</a>'], '']);
|
|
@@ -122,6 +122,7 @@ describe('Unit: parser/inline', () => {
|
|
|
122
122
|
assert.deepStrictEqual(inspect(parser('a@b')), [['<a class="email" href="mailto:a@b">a@b</a>'], '']);
|
|
123
123
|
assert.deepStrictEqual(inspect(parser('_a@b')), [['_', '<a class="email" href="mailto:a@b">a@b</a>'], '']);
|
|
124
124
|
assert.deepStrictEqual(inspect(parser('_a@b_')), [['<em><a class="email" href="mailto:a@b">a@b</a></em>'], '']);
|
|
125
|
+
assert.deepStrictEqual(inspect(parser('_a_b@c_')), [['<em><a class="email" href="mailto:a_b@c">a_b@c</a></em>'], '']);
|
|
125
126
|
assert.deepStrictEqual(inspect(parser('*a@b*')), [['<strong><a class="email" href="mailto:a@b">a@b</a></strong>'], '']);
|
|
126
127
|
assert.deepStrictEqual(inspect(parser('(a@b)')), [['<span class="paren">(<a class="email" href="mailto:a@b">a@b</a>)</span>'], '']);
|
|
127
128
|
assert.deepStrictEqual(inspect(parser(' a@b')), [[' ', '<a class="email" href="mailto:a@b">a@b</a>'], '']);
|
|
@@ -130,9 +131,7 @@ describe('Unit: parser/inline', () => {
|
|
|
130
131
|
|
|
131
132
|
it('channel', () => {
|
|
132
133
|
assert.deepStrictEqual(inspect(parser('@a#b')), [['<a class="channel" href="/@a?ch=b">@a#b</a>'], '']);
|
|
133
|
-
assert.deepStrictEqual(inspect(parser('@a#domain/b')), [['@a#domain/b'], '']);
|
|
134
134
|
assert.deepStrictEqual(inspect(parser('@domain/a#b')), [['<a class="channel" href="https://domain/@a?ch=b" target="_blank">@domain/a#b</a>'], '']);
|
|
135
|
-
assert.deepStrictEqual(inspect(parser('@domain/a#domain/b')), [['@domain/a#domain/b'], '']);
|
|
136
135
|
assert.deepStrictEqual(inspect(parser('_@a#b')), [['_', '<a class="channel" href="/@a?ch=b">@a#b</a>'], '']);
|
|
137
136
|
assert.deepStrictEqual(inspect(parser(' @a#b')), [[' ', '<a class="channel" href="/@a?ch=b">@a#b</a>'], '']);
|
|
138
137
|
});
|
|
@@ -150,8 +149,10 @@ describe('Unit: parser/inline', () => {
|
|
|
150
149
|
assert.deepStrictEqual(inspect(parser('#a#')), [['#a#'], '']);
|
|
151
150
|
assert.deepStrictEqual(inspect(parser('#a#b')), [['#a#b'], '']);
|
|
152
151
|
assert.deepStrictEqual(inspect(parser('#a')), [['<a class="hashtag" href="/hashtags/a">#a</a>'], '']);
|
|
153
|
-
assert.deepStrictEqual(inspect(parser('#a\nb\n#c\n[#d]')), [['<a class="hashtag" href="/hashtags/a">#a</a>', '<br>', 'b', '<br>', '<a class="hashtag" href="/hashtags/c">#c</a>', '<br>', '<a class="index" href="#index
|
|
152
|
+
assert.deepStrictEqual(inspect(parser('#a\nb\n#c\n[#d]')), [['<a class="hashtag" href="/hashtags/a">#a</a>', '<br>', 'b', '<br>', '<a class="hashtag" href="/hashtags/c">#c</a>', '<br>', '<a class="index" href="#index::d">d</a>'], '']);
|
|
154
153
|
assert.deepStrictEqual(inspect(parser('##a')), [['##a'], '']);
|
|
154
|
+
assert.deepStrictEqual(inspect(parser('_#a')), [['_', '<a class="hashtag" href="/hashtags/a">#a</a>'], '']);
|
|
155
|
+
assert.deepStrictEqual(inspect(parser('_#a_')), [['<em><a class="hashtag" href="/hashtags/a">#a</a></em>'], '']);
|
|
155
156
|
assert.deepStrictEqual(inspect(parser('a#b')), [['a#b'], '']);
|
|
156
157
|
assert.deepStrictEqual(inspect(parser('0a#b')), [['0a#b'], '']);
|
|
157
158
|
assert.deepStrictEqual(inspect(parser('あ#b')), [['あ#b'], '']);
|
|
@@ -173,6 +174,8 @@ describe('Unit: parser/inline', () => {
|
|
|
173
174
|
it('hashnum', () => {
|
|
174
175
|
assert.deepStrictEqual(inspect(parser('#1')), [['<a class="hashnum">#1</a>'], '']);
|
|
175
176
|
assert.deepStrictEqual(inspect(parser('#12345678901234567@a')), [['#12345678901234567@a'], '']);
|
|
177
|
+
assert.deepStrictEqual(inspect(parser('_#1_')), [['<em><a class="hashnum">#1</a></em>'], '']);
|
|
178
|
+
assert.deepStrictEqual(inspect(parser('_#1_0')), [['<em><a class="hashnum">#1</a></em>', '0'], '']);
|
|
176
179
|
assert.deepStrictEqual(inspect(parser('「#1」')), [['「', '<a class="hashnum">#1</a>', '」'], '']);
|
|
177
180
|
});
|
|
178
181
|
|
|
@@ -52,7 +52,7 @@ describe('Unit: parser/processor/figure', () => {
|
|
|
52
52
|
[...target.children].map(el => el.outerHTML),
|
|
53
53
|
[
|
|
54
54
|
'<figure data-type="quote" data-label="test-a" data-group="test" data-number="1" id="label:test-a"><figcaption><span class="figindex">Test 1. </span><span class="figtext"></span></figcaption><div><blockquote></blockquote></div></figure>',
|
|
55
|
-
'<h2 id="index
|
|
55
|
+
'<h2 id="index::0">0</h2>',
|
|
56
56
|
'<figure data-type="quote" data-label="test-b" data-group="test" data-number="2" id="label:test-b"><figcaption><span class="figindex">Test 2. </span><span class="figtext"></span></figcaption><div><blockquote></blockquote></div></figure>',
|
|
57
57
|
'<figure data-type="quote" data-label="quote-a" data-group="quote" data-number="1" id="label:quote-a"><figcaption><span class="figindex">Quote 1. </span><span class="figtext"></span></figcaption><div><blockquote></blockquote></div></figure>',
|
|
58
58
|
'<figure data-type="quote" data-label="test-b" data-group="test" data-number="3" class="invalid" data-invalid-syntax="figure" data-invalid-type="argument" data-invalid-message="Duplicate label"><figcaption><span class="figindex">Test 3. </span><span class="figtext"></span></figcaption><div><blockquote></blockquote></div></figure>',
|
|
@@ -168,40 +168,40 @@ describe('Unit: parser/processor/figure', () => {
|
|
|
168
168
|
assert.deepStrictEqual(
|
|
169
169
|
[...target.children].map(el => normalize(el.outerHTML)),
|
|
170
170
|
[
|
|
171
|
-
'<h1 id="index
|
|
171
|
+
'<h1 id="index::0">0</h1>',
|
|
172
172
|
'<figure data-label="$-0.0" data-group="$" hidden="" data-number="0.0"></figure>',
|
|
173
|
-
'<h2 id="index
|
|
173
|
+
'<h2 id="index::0">0</h2>',
|
|
174
174
|
'<figure data-type="quote" data-label="test-1" data-group="test" data-number="1" id="label:test-1"><figcaption><span class="figindex">Test 1. </span><span class="figtext"></span></figcaption><div><blockquote></blockquote></div></figure>',
|
|
175
|
-
'<h2 id="index
|
|
175
|
+
'<h2 id="index::0">0</h2>',
|
|
176
176
|
'<blockquote><section><h2>0</h2><h2>References</h2><ol class="references"></ol></section></blockquote>',
|
|
177
177
|
'<figure data-type="quote" data-label="test-b" data-group="test" data-number="2.1" id="label:test-b"><figcaption><span class="figindex">Test 2.1. </span><span class="figtext"></span></figcaption><div><blockquote></blockquote></div></figure>',
|
|
178
|
-
'<h2 id="index
|
|
178
|
+
'<h2 id="index::0">0</h2>',
|
|
179
179
|
'<figure data-label="$-0.0.0" data-group="$" class="invalid" data-invalid-syntax="figure" data-invalid-type="argument" data-invalid-message="Base index must be $-x.0 format"></figure>',
|
|
180
|
-
'<h3 id="index
|
|
180
|
+
'<h3 id="index::0">0</h3>',
|
|
181
181
|
'<figure data-label="$-0.0" data-group="$" hidden="" data-number="3.0"></figure>',
|
|
182
182
|
'<figure data-type="quote" data-label="test-c" data-group="test" data-number="3.1" id="label:test-c"><figcaption><span class="figindex">Test 3.1. </span><span class="figtext"></span></figcaption><div><blockquote></blockquote></div></figure>',
|
|
183
|
-
'<h2 id="index
|
|
183
|
+
'<h2 id="index::0">0</h2>',
|
|
184
184
|
'<figure data-label="$-0.1.0" data-group="$" class="invalid" data-invalid-syntax="figure" data-invalid-type="argument" data-invalid-message="Base index must be $-x.0 format"></figure>',
|
|
185
185
|
'<figure data-type="quote" data-label="test-d" data-group="test" data-number="4.1" id="label:test-d"><figcaption><span class="figindex">Test 4.1. </span><span class="figtext"></span></figcaption><div><blockquote></blockquote></div></figure>',
|
|
186
186
|
'<figure data-label="$-0.0" data-group="$" class="invalid" data-invalid-syntax="figure" data-invalid-type="position" data-invalid-message="Base index declarations must be after level 1 to 6 headings"></figure>',
|
|
187
187
|
'<figure data-label="$-0.1.0" data-group="$" class="invalid" data-invalid-syntax="figure" data-invalid-type="argument" data-invalid-message="Base index must be $-x.0 format"></figure>',
|
|
188
188
|
'<figure data-label="$-0.4.0" data-group="$" class="invalid" data-invalid-syntax="figure" data-invalid-type="argument" data-invalid-message="Base index must be $-x.0 format"></figure>',
|
|
189
189
|
'<figure data-label="$-0.1.0" data-group="$" class="invalid" data-invalid-syntax="figure" data-invalid-type="argument" data-invalid-message="Base index must be $-x.0 format"></figure>',
|
|
190
|
-
'<h2 id="index
|
|
191
|
-
'<h2 id="index
|
|
190
|
+
'<h2 id="index::0">0</h2>',
|
|
191
|
+
'<h2 id="index::0">0</h2>',
|
|
192
192
|
'<figure data-label="$-0.0" data-group="$" hidden="" data-number="6.0"></figure>',
|
|
193
193
|
'<figure data-type="quote" data-label="test-e" data-group="test" data-number="6.1" id="label:test-e"><figcaption><span class="figindex">Test 6.1. </span><span class="figtext"></span></figcaption><div><blockquote></blockquote></div></figure>',
|
|
194
|
-
'<h2 id="index
|
|
194
|
+
'<h2 id="index::0">0</h2>',
|
|
195
195
|
'<figure data-label="$-5.0" data-group="$" hidden="" data-number="5.0"></figure>',
|
|
196
196
|
'<figure data-type="quote" data-label="test-f" data-group="test" data-number="5.1" id="label:test-f"><figcaption><span class="figindex">Test 5.1. </span><span class="figtext"></span></figcaption><div><blockquote></blockquote></div></figure>',
|
|
197
197
|
'<figure data-label="$-0" data-group="$" class="invalid" data-invalid-syntax="figure" data-invalid-type="argument" data-invalid-message="Invalid base index"></figure>',
|
|
198
198
|
'<figure data-type="quote" data-label="test-g" data-group="test" data-number="5.2" id="label:test-g"><figcaption><span class="figindex">Test 5.2. </span><span class="figtext"></span></figcaption><div><blockquote></blockquote></div></figure>',
|
|
199
|
-
'<h3 id="index
|
|
199
|
+
'<h3 id="index::0">0</h3>',
|
|
200
200
|
'<figure data-label="$-0.0.0" data-group="$" class="invalid" data-invalid-syntax="figure" data-invalid-type="argument" data-invalid-message="Base index must be $-x.0 format"></figure>',
|
|
201
201
|
'<figure data-type="quote" data-label="test-h" data-group="test" data-number="5.3" id="label:test-h"><figcaption><span class="figindex">Test 5.3. </span><span class="figtext"></span></figcaption><div><blockquote></blockquote></div></figure>',
|
|
202
|
-
'<h3 id="index
|
|
202
|
+
'<h3 id="index::0">0</h3>',
|
|
203
203
|
'<figure data-type="quote" data-label="test-i" data-group="test" data-number="5.4" id="label:test-i"><figcaption><span class="figindex">Test 5.4. </span><span class="figtext"></span></figcaption><div><blockquote></blockquote></div></figure>',
|
|
204
|
-
'<h1 id="index
|
|
204
|
+
'<h1 id="index::0">0</h1>',
|
|
205
205
|
'<figure data-type="quote" data-label="test-j" data-group="test" data-number="6.1" id="label:test-j"><figcaption><span class="figindex">Test 6.1. </span><span class="figtext"></span></figcaption><div><blockquote></blockquote></div></figure>',
|
|
206
206
|
]);
|
|
207
207
|
}
|
|
@@ -235,22 +235,22 @@ describe('Unit: parser/processor/figure', () => {
|
|
|
235
235
|
[...target.children].map(el => normalize(el.outerHTML)),
|
|
236
236
|
[
|
|
237
237
|
'<figure data-label="$-0.0" data-group="$" class="invalid" data-invalid-syntax="figure" data-invalid-type="position" data-invalid-message="Base index declarations must be after level 1 to 6 headings"></figure>',
|
|
238
|
-
'<h2 id="index
|
|
238
|
+
'<h2 id="index::0">0</h2>',
|
|
239
239
|
'<figure data-label="$-0.0" data-group="$" hidden="" data-number="0.0"></figure>',
|
|
240
240
|
'<figure data-type="quote" data-label="test-a" data-group="test" data-number="0.1" id="label:test-a"><figcaption><span class="figindex">Test 0.1. </span><span class="figtext"></span></figcaption><div><blockquote></blockquote></div></figure>',
|
|
241
241
|
'<figure data-label="$-0.0" data-group="$" class="invalid" data-invalid-syntax="figure" data-invalid-type="position" data-invalid-message="Base index declarations must be after level 1 to 6 headings"></figure>',
|
|
242
|
-
'<h2 id="index
|
|
242
|
+
'<h2 id="index::0">0</h2>',
|
|
243
243
|
'<figure data-type="quote" data-label="test-b" data-group="test" data-number="1.1" id="label:test-b"><figcaption><span class="figindex">Test 1.1. </span><span class="figtext"></span></figcaption><div><blockquote></blockquote></div></figure>',
|
|
244
244
|
'<figure data-label="$-0.0" data-group="$" class="invalid" data-invalid-syntax="figure" data-invalid-type="position" data-invalid-message="Base index declarations must be after level 1 to 6 headings"></figure>',
|
|
245
|
-
'<h3 id="index
|
|
245
|
+
'<h3 id="index::0">0</h3>',
|
|
246
246
|
'<figure data-type="quote" data-label="test-c" data-group="test" data-number="1.2" id="label:test-c"><figcaption><span class="figindex">Test 1.2. </span><span class="figtext"></span></figcaption><div><blockquote></blockquote></div></figure>',
|
|
247
247
|
'<figure data-label="$-1.0" data-group="$" class="invalid" data-invalid-syntax="figure" data-invalid-type="position" data-invalid-message="Base index declarations must be after level 1 to 6 headings"></figure>',
|
|
248
|
-
'<h2 id="index
|
|
248
|
+
'<h2 id="index::0">0</h2>',
|
|
249
249
|
'<figure data-label="$-0.0" data-group="$" hidden="" data-number="2.0"></figure>',
|
|
250
250
|
'<figure data-type="quote" data-label="test-d" data-group="test" data-number="2.1" id="label:test-d"><figcaption><span class="figindex">Test 2.1. </span><span class="figtext"></span></figcaption><div><blockquote></blockquote></div></figure>',
|
|
251
|
-
'<h3 id="index
|
|
251
|
+
'<h3 id="index::0">0</h3>',
|
|
252
252
|
'<figure data-label="$-0.0" data-group="$" hidden="" data-number="2.0"></figure>',
|
|
253
|
-
'<h2 id="index
|
|
253
|
+
'<h2 id="index::0">0</h2>',
|
|
254
254
|
'<figure data-label="$-9.0" data-group="$" hidden="" data-number="9.0"></figure>',
|
|
255
255
|
'<figure data-type="quote" data-label="test-e" data-group="test" data-number="9.1" id="label:test-e"><figcaption><span class="figindex">Test 9.1. </span><span class="figtext"></span></figcaption><div><blockquote></blockquote></div></figure>',
|
|
256
256
|
]);
|