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.
Files changed (43) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/README.md +1 -1
  3. package/dist/index.js +49 -42
  4. package/index.d.ts +7 -7
  5. package/markdown.d.ts +4 -4
  6. package/package.json +1 -1
  7. package/src/parser/api/bind.test.ts +17 -17
  8. package/src/parser/api/bind.ts +1 -0
  9. package/src/parser/api/parse.test.ts +6 -8
  10. package/src/parser/api/parse.ts +2 -1
  11. package/src/parser/block/dlist.test.ts +34 -34
  12. package/src/parser/block/extension/aside.test.ts +3 -3
  13. package/src/parser/block/extension/aside.ts +2 -2
  14. package/src/parser/block/extension/figure.test.ts +2 -2
  15. package/src/parser/block/heading.test.ts +47 -47
  16. package/src/parser/block/olist.test.ts +29 -29
  17. package/src/parser/block/pagebreak.test.ts +31 -0
  18. package/src/parser/block/pagebreak.ts +7 -0
  19. package/src/parser/block/reply/cite.test.ts +1 -1
  20. package/src/parser/block/ulist.test.ts +25 -25
  21. package/src/parser/block.ts +3 -3
  22. package/src/parser/inline/autolink/account.ts +3 -5
  23. package/src/parser/inline/autolink/anchor.test.ts +2 -2
  24. package/src/parser/inline/autolink/anchor.ts +4 -3
  25. package/src/parser/inline/autolink/channel.test.ts +0 -2
  26. package/src/parser/inline/autolink/channel.ts +0 -1
  27. package/src/parser/inline/autolink/hashnum.test.ts +1 -1
  28. package/src/parser/inline/autolink/hashtag.test.ts +2 -6
  29. package/src/parser/inline/autolink/hashtag.ts +7 -20
  30. package/src/parser/inline/extension/index.test.ts +48 -48
  31. package/src/parser/inline/extension/index.ts +1 -1
  32. package/src/parser/inline/extension/indexee.ts +15 -11
  33. package/src/parser/inline/extension/indexer.ts +1 -1
  34. package/src/parser/inline/link.ts +1 -0
  35. package/src/parser/inline/mark.test.ts +9 -9
  36. package/src/parser/inline/mark.ts +1 -1
  37. package/src/parser/inline.test.ts +9 -6
  38. package/src/parser/processor/figure.test.ts +19 -19
  39. package/src/parser/processor/footnote.test.ts +66 -66
  40. package/src/parser/processor/footnote.ts +11 -11
  41. package/src/util/toc.test.ts +28 -28
  42. package/src/parser/block/horizontalrule.test.ts +0 -31
  43. package/src/parser/block/horizontalrule.ts +0 -7
@@ -34,9 +34,9 @@ export const aside: ExtensionParser.AsideParser = block(validate('~~~', fmap(
34
34
  'data-invalid-type': 'content',
35
35
  'data-invalid-message': 'Missing the title at the first line',
36
36
  }, `${opener}${body}${closer}`)];
37
- assert(identity(text(heading)));
37
+ assert(identity(context.id, text(heading)));
38
38
  return [
39
- html('aside', { id: identity(text(heading)), class: 'aside' }, [
39
+ html('aside', { id: identity(context.id, text(heading)), class: 'aside' }, [
40
40
  document,
41
41
  html('h2', 'References'),
42
42
  references,
@@ -44,8 +44,8 @@ describe('Unit: parser/block/extension/figure', () => {
44
44
  assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n!https://host\n\n\n~~~')), [['<figure data-type="media" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span><span class="figtext"></span></figcaption><div><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt=""></a></div></figure>'], '']);
45
45
  assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n!https://host\n\n\\\n~~~')), [['<figure data-type="media" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span><span class="figtext">\\</span></figcaption><div><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt=""></a></div></figure>'], '']);
46
46
  assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n!https://host\n\n!https://caption\n~~~')), [['<figure data-type="media" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span><span class="figtext">!<a class="url" href="https://caption" target="_blank">https://caption</a></span></figcaption><div><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt=""></a></div></figure>'], '']);
47
- assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n- a\n~~~')), [['<figure data-type="list" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span><span class="figtext"></span></figcaption><div><ul><li id="index:a">a</li></ul></div></figure>'], '']);
48
- assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n1. a\n~~~')), [['<figure data-type="list" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span><span class="figtext"></span></figcaption><div><ol><li id="index:a">a</li></ol></div></figure>'], '']);
47
+ assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n- a\n~~~')), [['<figure data-type="list" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span><span class="figtext"></span></figcaption><div><ul><li id="index::a">a</li></ul></div></figure>'], '']);
48
+ assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n1. a\n~~~')), [['<figure data-type="list" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span><span class="figtext"></span></figcaption><div><ol><li id="index::a">a</li></ol></div></figure>'], '']);
49
49
  assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n|\n|-\n|\n~~~')), [['<figure data-type="table" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span><span class="figtext"></span></figcaption><div><table><thead><tr></tr></thead><tbody><tr></tr></tbody></table></div></figure>'], '']);
50
50
  assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n```\n\n```\n~~~')), [['<figure data-type="text" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span><span class="figtext"></span></figcaption><div><pre class="text"></pre></div></figure>'], '']);
51
51
  assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n```\n~~~\n```\n\n~~~')), [['<figure data-type="text" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span><span class="figtext"></span></figcaption><div><pre class="text">~~~</pre></div></figure>'], '']);
@@ -27,60 +27,60 @@ describe('Unit: parser/block/heading', () => {
27
27
  assert.deepStrictEqual(inspect(parser('# a\nb')), undefined);
28
28
  assert.deepStrictEqual(inspect(parser('# *a\nb*')), undefined);
29
29
  assert.deepStrictEqual(inspect(parser('# a\n#b')), undefined);
30
- assert.deepStrictEqual(inspect(parser('####### a')), [['<h6 class="invalid" id="index:a">a</h6>'], '']);
30
+ assert.deepStrictEqual(inspect(parser('####### a')), [['<h6 class="invalid" id="index::a">a</h6>'], '']);
31
31
  assert.deepStrictEqual(inspect(parser(' # a')), undefined);
32
32
  });
33
33
 
34
34
  it('basic', () => {
35
- assert.deepStrictEqual(inspect(parser('# a')), [['<h1 id="index:a">a</h1>'], '']);
36
- assert.deepStrictEqual(inspect(parser('# a ')), [['<h1 id="index:a">a</h1>'], '']);
37
- assert.deepStrictEqual(inspect(parser('# a b c \n')), [['<h1 id="index:a_b_c">a b c</h1>'], '']);
38
- assert.deepStrictEqual(inspect(parser('# a\n')), [['<h1 id="index:a">a</h1>'], '']);
39
- assert.deepStrictEqual(inspect(parser('# _a_`b`${c}$')), [['<h1 id="index:a`b`${c}$"><em>a</em><code data-src="`b`">b</code><span class="math" translate="no" data-src="${c}$">${c}$</span></h1>'], '']);
40
- assert.deepStrictEqual(inspect(parser('# a\\')), [['<h1 id="index:a">a</h1>'], '']);
41
- assert.deepStrictEqual(inspect(parser('# a\\\n')), [['<h1 id="index:a">a</h1>'], '']);
42
- assert.deepStrictEqual(inspect(parser('# \\')), [['<h1 id="index:\\">\\</h1>'], '']);
43
- assert.deepStrictEqual(inspect(parser('# \\ a')), [['<h1 id="index:a">a</h1>'], '']);
44
- assert.deepStrictEqual(inspect(parser('## \\')), [['<h2 id="index:\\">\\</h2>'], '']);
45
- assert.deepStrictEqual(inspect(parser('# @a')), [['<h1 id="index:@a">@a</h1>'], '']);
46
- assert.deepStrictEqual(inspect(parser('## @a')), [['<h2 id="index:@a"><a class="account" href="/@a">@a</a></h2>'], '']);
47
- assert.deepStrictEqual(inspect(parser('# http://host')), [['<h1 id="index:http://host">http://host</h1>'], '']);
48
- assert.deepStrictEqual(inspect(parser('## http://host')), [['<h2 id="index:http://host"><a class="url" href="http://host" target="_blank">http://host</a></h2>'], '']);
49
- assert.deepStrictEqual(inspect(parser('# !http://host')), [['<h1 id="index:!http://host">!http://host</h1>'], '']);
50
- assert.deepStrictEqual(inspect(parser('## !http://host')), [['<h2 id="index:!http://host">!<a class="url" href="http://host" target="_blank">http://host</a></h2>'], '']);
51
- assert.deepStrictEqual(inspect(parser('# a((b))')), [['<h1 id="index:a((b))">a<span class="paren">((b))</span></h1>'], '']);
52
- assert.deepStrictEqual(inspect(parser('## a((b))')), [['<h2 id="index:a((b))">a<span class="paren">((b))</span></h2>'], '']);
53
- assert.deepStrictEqual(inspect(parser('# a[[b]]')), [['<h1 id="index:a[[b]]">a[[b]]</h1>'], '']);
54
- assert.deepStrictEqual(inspect(parser('## a[[b]]')), [['<h2 id="index:a[[b]]">a[[b]]</h2>'], '']);
55
- assert.deepStrictEqual(inspect(parser('###### a')), [['<h6 id="index:a">a</h6>'], '']);
56
- assert.deepStrictEqual(inspect(parser('# a\n##')), [['<h1 id="index:a">a</h1>', '##'], '']);
57
- assert.deepStrictEqual(inspect(parser('# a\n## ')), [['<h1 id="index:a">a</h1>', '## '], '']);
58
- assert.deepStrictEqual(inspect(parser('# a\n## b')), [['<h1 id="index:a">a</h1>', '<h2 id="index:b">b</h2>'], '']);
59
- assert.deepStrictEqual(inspect(parser('# a\n##\n## b')), [['<h1 id="index:a">a</h1>', '##\n', '<h2 id="index:b">b</h2>'], '']);
35
+ assert.deepStrictEqual(inspect(parser('# a')), [['<h1 id="index::a">a</h1>'], '']);
36
+ assert.deepStrictEqual(inspect(parser('# a ')), [['<h1 id="index::a">a</h1>'], '']);
37
+ assert.deepStrictEqual(inspect(parser('# a b c \n')), [['<h1 id="index::a_b_c">a b c</h1>'], '']);
38
+ assert.deepStrictEqual(inspect(parser('# a\n')), [['<h1 id="index::a">a</h1>'], '']);
39
+ assert.deepStrictEqual(inspect(parser('# _a_`b`${c}$')), [['<h1 id="index::a`b`${c}$"><em>a</em><code data-src="`b`">b</code><span class="math" translate="no" data-src="${c}$">${c}$</span></h1>'], '']);
40
+ assert.deepStrictEqual(inspect(parser('# a\\')), [['<h1 id="index::a">a</h1>'], '']);
41
+ assert.deepStrictEqual(inspect(parser('# a\\\n')), [['<h1 id="index::a">a</h1>'], '']);
42
+ assert.deepStrictEqual(inspect(parser('# \\')), [['<h1 id="index::\\">\\</h1>'], '']);
43
+ assert.deepStrictEqual(inspect(parser('# \\ a')), [['<h1 id="index::a">a</h1>'], '']);
44
+ assert.deepStrictEqual(inspect(parser('## \\')), [['<h2 id="index::\\">\\</h2>'], '']);
45
+ assert.deepStrictEqual(inspect(parser('# @a')), [['<h1 id="index::@a">@a</h1>'], '']);
46
+ assert.deepStrictEqual(inspect(parser('## @a')), [['<h2 id="index::@a"><a class="account" href="/@a">@a</a></h2>'], '']);
47
+ assert.deepStrictEqual(inspect(parser('# http://host')), [['<h1 id="index::http://host">http://host</h1>'], '']);
48
+ assert.deepStrictEqual(inspect(parser('## http://host')), [['<h2 id="index::http://host"><a class="url" href="http://host" target="_blank">http://host</a></h2>'], '']);
49
+ assert.deepStrictEqual(inspect(parser('# !http://host')), [['<h1 id="index::!http://host">!http://host</h1>'], '']);
50
+ assert.deepStrictEqual(inspect(parser('## !http://host')), [['<h2 id="index::!http://host">!<a class="url" href="http://host" target="_blank">http://host</a></h2>'], '']);
51
+ assert.deepStrictEqual(inspect(parser('# a((b))')), [['<h1 id="index::a((b))">a<span class="paren">((b))</span></h1>'], '']);
52
+ assert.deepStrictEqual(inspect(parser('## a((b))')), [['<h2 id="index::a((b))">a<span class="paren">((b))</span></h2>'], '']);
53
+ assert.deepStrictEqual(inspect(parser('# a[[b]]')), [['<h1 id="index::a[[b]]">a[[b]]</h1>'], '']);
54
+ assert.deepStrictEqual(inspect(parser('## a[[b]]')), [['<h2 id="index::a[[b]]">a[[b]]</h2>'], '']);
55
+ assert.deepStrictEqual(inspect(parser('###### a')), [['<h6 id="index::a">a</h6>'], '']);
56
+ assert.deepStrictEqual(inspect(parser('# a\n##')), [['<h1 id="index::a">a</h1>', '##'], '']);
57
+ assert.deepStrictEqual(inspect(parser('# a\n## ')), [['<h1 id="index::a">a</h1>', '## '], '']);
58
+ assert.deepStrictEqual(inspect(parser('# a\n## b')), [['<h1 id="index::a">a</h1>', '<h2 id="index::b">b</h2>'], '']);
59
+ assert.deepStrictEqual(inspect(parser('# a\n##\n## b')), [['<h1 id="index::a">a</h1>', '##\n', '<h2 id="index::b">b</h2>'], '']);
60
60
  });
61
61
 
62
62
  it('indexer', () => {
63
- assert.deepStrictEqual(inspect(parser('# [#a]')), [['<h1 id="index:[#a]">[#a]</h1>'], '']);
64
- assert.deepStrictEqual(inspect(parser('# a[#b]')), [['<h1 id="index:a[#b]">a[#b]</h1>'], '']);
65
- assert.deepStrictEqual(inspect(parser('# a [#b]')), [['<h1 id="index:b">a<span class="indexer" data-index="b"></span></h1>'], '']);
66
- assert.deepStrictEqual(inspect(parser('# a [#b] ')), [['<h1 id="index:b">a<span class="indexer" data-index="b"></span></h1>'], '']);
67
- assert.deepStrictEqual(inspect(parser('# a [#b]\\')), [['<h1 id="index:a_[#b]">a [#b]</h1>'], '']);
68
- assert.deepStrictEqual(inspect(parser('# a [#B]')), [['<h1 id="index:B">a<span class="indexer" data-index="B"></span></h1>'], '']);
69
- assert.deepStrictEqual(inspect(parser('# a [#b ]')), [['<h1 id="index:b">a<span class="indexer" data-index="b"></span></h1>'], '']);
70
- assert.deepStrictEqual(inspect(parser('# a [#b ]')), [['<h1 id="index:b">a<span class="indexer" data-index="b"></span></h1>'], '']);
71
- assert.deepStrictEqual(inspect(parser('# a [#b c]')), [['<h1 id="index:b_c">a<span class="indexer" data-index="b_c"></span></h1>'], '']);
72
- assert.deepStrictEqual(inspect(parser('# a [#_b_`c`${d}$]')), [['<h1 id="index:b`c`${d}$">a<span class="indexer" data-index="b`c`${d}$"></span></h1>'], '']);
73
- assert.deepStrictEqual(inspect(parser('# a [#@a]')), [['<h1 id="index:@a">a<span class="indexer" data-index="@a"></span></h1>'], '']);
74
- assert.deepStrictEqual(inspect(parser('# a [#http://host]')), [['<h1 id="index:http://host">a<span class="indexer" data-index="http://host"></span></h1>'], '']);
75
- assert.deepStrictEqual(inspect(parser('# a [#!http://host]')), [['<h1 id="index:!http://host">a<span class="indexer" data-index="!http://host"></span></h1>'], '']);
76
- assert.deepStrictEqual(inspect(parser('# a [#a((b))]')), [['<h1 id="index:a((b))">a<span class="indexer" data-index="a((b))"></span></h1>'], '']);
77
- assert.deepStrictEqual(inspect(parser('# a [#a[[b]]]')), [['<h1 id="index:a[[b]]">a<span class="indexer" data-index="a[[b]]"></span></h1>'], '']);
78
- assert.deepStrictEqual(inspect(parser('# a [#b |c]')), [['<h1 id="index:c">a<span class="indexer" data-index="c"></span></h1>'], '']);
79
- assert.deepStrictEqual(inspect(parser('# a [#b] [#c]')), [['<h1 id="index:c">a [#b]<span class="indexer" data-index="c"></span></h1>'], '']);
80
- assert.deepStrictEqual(inspect(parser('# a [#b] \n')), [['<h1 id="index:b">a<span class="indexer" data-index="b"></span></h1>'], '']);
81
- assert.deepStrictEqual(inspect(parser('# a \\[#b]')), [['<h1 id="index:a_[#b]">a [#b]</h1>'], '']);
82
- assert.deepStrictEqual(inspect(parser('## a [#b] [#c]')), [['<h2 id="index:c">a [<a class="hashtag" href="/hashtags/b">#b</a>]<span class="indexer" data-index="c"></span></h2>'], '']);
83
- assert.deepStrictEqual(inspect(parser('## a [#b ] [#c ]')), [['<h2 id="index:c">a [<a class="hashtag" href="/hashtags/b">#b</a> ]<span class="indexer" data-index="c"></span></h2>'], '']);
63
+ assert.deepStrictEqual(inspect(parser('# [#a]')), [['<h1 id="index::[#a]">[#a]</h1>'], '']);
64
+ assert.deepStrictEqual(inspect(parser('# a[#b]')), [['<h1 id="index::a[#b]">a[#b]</h1>'], '']);
65
+ assert.deepStrictEqual(inspect(parser('# a [#b]')), [['<h1 id="index::b">a<span class="indexer" data-index="b"></span></h1>'], '']);
66
+ assert.deepStrictEqual(inspect(parser('# a [#b] ')), [['<h1 id="index::b">a<span class="indexer" data-index="b"></span></h1>'], '']);
67
+ assert.deepStrictEqual(inspect(parser('# a [#b]\\')), [['<h1 id="index::a_[#b]">a [#b]</h1>'], '']);
68
+ assert.deepStrictEqual(inspect(parser('# a [#B]')), [['<h1 id="index::B">a<span class="indexer" data-index="B"></span></h1>'], '']);
69
+ assert.deepStrictEqual(inspect(parser('# a [#b ]')), [['<h1 id="index::b">a<span class="indexer" data-index="b"></span></h1>'], '']);
70
+ assert.deepStrictEqual(inspect(parser('# a [#b ]')), [['<h1 id="index::b">a<span class="indexer" data-index="b"></span></h1>'], '']);
71
+ assert.deepStrictEqual(inspect(parser('# a [#b c]')), [['<h1 id="index::b_c">a<span class="indexer" data-index="b_c"></span></h1>'], '']);
72
+ assert.deepStrictEqual(inspect(parser('# a [#_b_`c`${d}$]')), [['<h1 id="index::b`c`${d}$">a<span class="indexer" data-index="b`c`${d}$"></span></h1>'], '']);
73
+ assert.deepStrictEqual(inspect(parser('# a [#@a]')), [['<h1 id="index::@a">a<span class="indexer" data-index="@a"></span></h1>'], '']);
74
+ assert.deepStrictEqual(inspect(parser('# a [#http://host]')), [['<h1 id="index::http://host">a<span class="indexer" data-index="http://host"></span></h1>'], '']);
75
+ assert.deepStrictEqual(inspect(parser('# a [#!http://host]')), [['<h1 id="index::!http://host">a<span class="indexer" data-index="!http://host"></span></h1>'], '']);
76
+ assert.deepStrictEqual(inspect(parser('# a [#a((b))]')), [['<h1 id="index::a((b))">a<span class="indexer" data-index="a((b))"></span></h1>'], '']);
77
+ assert.deepStrictEqual(inspect(parser('# a [#a[[b]]]')), [['<h1 id="index::a[[b]]">a<span class="indexer" data-index="a[[b]]"></span></h1>'], '']);
78
+ assert.deepStrictEqual(inspect(parser('# a [#b |c]')), [['<h1 id="index::c">a<span class="indexer" data-index="c"></span></h1>'], '']);
79
+ assert.deepStrictEqual(inspect(parser('# a [#b] [#c]')), [['<h1 id="index::c">a [#b]<span class="indexer" data-index="c"></span></h1>'], '']);
80
+ assert.deepStrictEqual(inspect(parser('# a [#b] \n')), [['<h1 id="index::b">a<span class="indexer" data-index="b"></span></h1>'], '']);
81
+ assert.deepStrictEqual(inspect(parser('# a \\[#b]')), [['<h1 id="index::a_[#b]">a [#b]</h1>'], '']);
82
+ assert.deepStrictEqual(inspect(parser('## a [#b] [#c]')), [['<h2 id="index::c">a [<a class="hashtag" href="/hashtags/b">#b</a>]<span class="indexer" data-index="c"></span></h2>'], '']);
83
+ assert.deepStrictEqual(inspect(parser('## a [#b ] [#c ]')), [['<h2 id="index::c">a [<a class="hashtag" href="/hashtags/b">#b</a> ]<span class="indexer" data-index="c"></span></h2>'], '']);
84
84
  });
85
85
 
86
86
  });
@@ -39,12 +39,12 @@ describe('Unit: parser/block/olist', () => {
39
39
  // filled
40
40
  assert.deepStrictEqual(inspect(parser('1. \\')), [['<ol><li></li></ol>'], '']);
41
41
  assert.deepStrictEqual(inspect(parser('1. \\\n')), [['<ol><li></li></ol>'], '']);
42
- assert.deepStrictEqual(inspect(parser('1. -')), [['<ol><li id="index:-">-</li></ol>'], '']);
43
- assert.deepStrictEqual(inspect(parser('1. -\n')), [['<ol><li id="index:-">-</li></ol>'], '']);
42
+ assert.deepStrictEqual(inspect(parser('1. -')), [['<ol><li id="index::-">-</li></ol>'], '']);
43
+ assert.deepStrictEqual(inspect(parser('1. -\n')), [['<ol><li id="index::-">-</li></ol>'], '']);
44
44
  // pending
45
45
  assert.deepStrictEqual(inspect(parser('(1) ')), [['<ol data-format="paren"><li></li></ol>'], '']);
46
46
  // filled
47
- assert.deepStrictEqual(inspect(parser('(1) a')), [['<ol data-format="paren"><li id="index:a">a</li></ol>'], '']);
47
+ assert.deepStrictEqual(inspect(parser('(1) a')), [['<ol data-format="paren"><li id="index::a">a</li></ol>'], '']);
48
48
  });
49
49
 
50
50
  it('multiple', () => {
@@ -55,8 +55,8 @@ describe('Unit: parser/block/olist', () => {
55
55
  assert.deepStrictEqual(inspect(parser('0.\n0. ')), [['<ol><li></li><li></li></ol>'], '']);
56
56
  assert.deepStrictEqual(inspect(parser('0.\n0.\n')), [['<ol><li></li><li></li></ol>'], '']);
57
57
  // filled
58
- assert.deepStrictEqual(inspect(parser('0. 1\n0. 2')), [['<ol><li id="index:1">1</li><li id="index:2">2</li></ol>'], '']);
59
- assert.deepStrictEqual(inspect(parser('0. 1\n0. 2\n0. 3')), [['<ol><li id="index:1">1</li><li id="index:2">2</li><li id="index:3">3</li></ol>'], '']);
58
+ assert.deepStrictEqual(inspect(parser('0. 1\n0. 2')), [['<ol><li id="index::1">1</li><li id="index::2">2</li></ol>'], '']);
59
+ assert.deepStrictEqual(inspect(parser('0. 1\n0. 2\n0. 3')), [['<ol><li id="index::1">1</li><li id="index::2">2</li><li id="index::3">3</li></ol>'], '']);
60
60
  // pending
61
61
  assert.deepStrictEqual(inspect(parser('(1) \n(')), [['<ol data-format="paren"><li></li><li></li></ol>'], '']);
62
62
  assert.deepStrictEqual(inspect(parser('(1) \n(\n')), [['<ol data-format="paren"><li></li><li></li></ol>'], '']);
@@ -67,21 +67,21 @@ describe('Unit: parser/block/olist', () => {
67
67
  // filled
68
68
  assert.deepStrictEqual(inspect(parser('(1) \n(1) ')), [['<ol data-format="paren"><li></li><li></li></ol>'], '']);
69
69
  // invalid
70
- assert.deepStrictEqual(inspect(parser('0. \n0 ')), [['<ol><li></li><li id="index:0"><span class="invalid">0 </span></li></ol>'], '']);
70
+ assert.deepStrictEqual(inspect(parser('0. \n0 ')), [['<ol><li></li><li id="index::0"><span class="invalid">0 </span></li></ol>'], '']);
71
71
  });
72
72
 
73
73
  it('nest', () => {
74
74
  assert.deepStrictEqual(inspect(parser('0.\n 0')), [['<ol><li><br><ol><li></li></ol></li></ol>'], '']);
75
- assert.deepStrictEqual(inspect(parser('0. 1\n 0')), [['<ol><li id="index:1">1<ol><li></li></ol></li></ol>'], '']);
76
- assert.deepStrictEqual(inspect(parser('0. 1\n 0.')), [['<ol><li id="index:1">1<ol><li></li></ol></li></ol>'], '']);
77
- assert.deepStrictEqual(inspect(parser('0. 1\n 0. ')), [['<ol><li id="index:1">1<ol><li></li></ol></li></ol>'], '']);
78
- assert.deepStrictEqual(inspect(parser('0. 1\n 0.\n')), [['<ol><li id="index:1">1<ol><li></li></ol></li></ol>'], '']);
79
- assert.deepStrictEqual(inspect(parser('0. 1\n 0. 2')), [['<ol><li id="index:1">1<ol><li id="index:2">2</li></ol></li></ol>'], '']);
80
- assert.deepStrictEqual(inspect(parser('0. 1\n 0. 2\n0. 3')), [['<ol><li id="index:1">1<ol><li id="index:2">2</li></ol></li><li id="index:3">3</li></ol>'], '']);
81
- assert.deepStrictEqual(inspect(parser('0. 1\n 0. 2\n 0. 3')), [['<ol><li id="index:1">1<ol><li id="index:2">2</li><li id="index:3">3</li></ol></li></ol>'], '']);
82
- assert.deepStrictEqual(inspect(parser('0. 1\n 0. 2\n 0. 3')), [['<ol><li id="index:1">1<ol><li id="index:2">2<ol><li id="index:3">3</li></ol></li></ol></li></ol>'], '']);
83
- assert.deepStrictEqual(inspect(parser('0. 1\n 0. 2\n 0. 3')), [['<ol><li id="index:1">1<ol><li id="index:2">2</li></ol></li><li id="index:0._3"><span class="invalid"> 0. 3</span></li></ol>'], '']);
84
- assert.deepStrictEqual(inspect(parser('0. !http://host')), [['<ol><li id="index:!http://host">!<a class="url" href="http://host" target="_blank">http://host</a></li></ol>'], '']);
75
+ assert.deepStrictEqual(inspect(parser('0. 1\n 0')), [['<ol><li id="index::1">1<ol><li></li></ol></li></ol>'], '']);
76
+ assert.deepStrictEqual(inspect(parser('0. 1\n 0.')), [['<ol><li id="index::1">1<ol><li></li></ol></li></ol>'], '']);
77
+ assert.deepStrictEqual(inspect(parser('0. 1\n 0. ')), [['<ol><li id="index::1">1<ol><li></li></ol></li></ol>'], '']);
78
+ assert.deepStrictEqual(inspect(parser('0. 1\n 0.\n')), [['<ol><li id="index::1">1<ol><li></li></ol></li></ol>'], '']);
79
+ assert.deepStrictEqual(inspect(parser('0. 1\n 0. 2')), [['<ol><li id="index::1">1<ol><li id="index::2">2</li></ol></li></ol>'], '']);
80
+ assert.deepStrictEqual(inspect(parser('0. 1\n 0. 2\n0. 3')), [['<ol><li id="index::1">1<ol><li id="index::2">2</li></ol></li><li id="index::3">3</li></ol>'], '']);
81
+ assert.deepStrictEqual(inspect(parser('0. 1\n 0. 2\n 0. 3')), [['<ol><li id="index::1">1<ol><li id="index::2">2</li><li id="index::3">3</li></ol></li></ol>'], '']);
82
+ assert.deepStrictEqual(inspect(parser('0. 1\n 0. 2\n 0. 3')), [['<ol><li id="index::1">1<ol><li id="index::2">2<ol><li id="index::3">3</li></ol></li></ol></li></ol>'], '']);
83
+ assert.deepStrictEqual(inspect(parser('0. 1\n 0. 2\n 0. 3')), [['<ol><li id="index::1">1<ol><li id="index::2">2</li></ol></li><li id="index::0._3"><span class="invalid"> 0. 3</span></li></ol>'], '']);
84
+ assert.deepStrictEqual(inspect(parser('0. !http://host')), [['<ol><li id="index::!http://host">!<a class="url" href="http://host" target="_blank">http://host</a></li></ol>'], '']);
85
85
  });
86
86
 
87
87
  it('index', () => {
@@ -103,11 +103,11 @@ describe('Unit: parser/block/olist', () => {
103
103
  assert.deepStrictEqual(inspect(parser('(1)-1-1 ')), [['<ol data-format="paren"><li data-marker="(1)-1-1"></li></ol>'], '']);
104
104
  assert.deepStrictEqual(inspect(parser('(1) \n(1)-')), [['<ol data-format="paren"><li></li><li data-marker="(1)-"></li></ol>'], '']);
105
105
  assert.deepStrictEqual(inspect(parser('(1) \n(1)-1')), [['<ol data-format="paren"><li></li><li data-marker="(1)-1"></li></ol>'], '']);
106
- assert.deepStrictEqual(inspect(parser('1. \n1--')), [['<ol><li></li><li id="index:1--"><span class="invalid">1--</span></li></ol>'], '']);
107
- assert.deepStrictEqual(inspect(parser('1. \n1--. ')), [['<ol><li></li><li id="index:1--."><span class="invalid">1--. </span></li></ol>'], '']);
108
- assert.deepStrictEqual(inspect(parser('(1) \n(1)--')), [['<ol data-format="paren"><li></li><li id="index:(1)--"><span class="invalid">(1)--</span></li></ol>'], '']);
109
- assert.deepStrictEqual(inspect(parser('(1) \n(1)-- ')), [['<ol data-format="paren"><li></li><li id="index:(1)--"><span class="invalid">(1)-- </span></li></ol>'], '']);
110
- assert.deepStrictEqual(inspect(parser('1-1. 1')), [['<ol><li data-marker="1-1." id="index:1">1</li></ol>'], '']);
106
+ assert.deepStrictEqual(inspect(parser('1. \n1--')), [['<ol><li></li><li id="index::1--"><span class="invalid">1--</span></li></ol>'], '']);
107
+ assert.deepStrictEqual(inspect(parser('1. \n1--. ')), [['<ol><li></li><li id="index::1--."><span class="invalid">1--. </span></li></ol>'], '']);
108
+ assert.deepStrictEqual(inspect(parser('(1) \n(1)--')), [['<ol data-format="paren"><li></li><li id="index::(1)--"><span class="invalid">(1)--</span></li></ol>'], '']);
109
+ assert.deepStrictEqual(inspect(parser('(1) \n(1)-- ')), [['<ol data-format="paren"><li></li><li id="index::(1)--"><span class="invalid">(1)-- </span></li></ol>'], '']);
110
+ assert.deepStrictEqual(inspect(parser('1-1. 1')), [['<ol><li data-marker="1-1." id="index::1">1</li></ol>'], '']);
111
111
  });
112
112
 
113
113
  it('type', () => {
@@ -116,24 +116,24 @@ describe('Unit: parser/block/olist', () => {
116
116
  assert.deepStrictEqual(inspect(parser('I. ')), [['<ol type="I" data-type="upper-roman"><li></li></ol>'], '']);
117
117
  assert.deepStrictEqual(inspect(parser('A. ')), [['<ol type="A" data-type="upper-alpha"><li></li></ol>'], '']);
118
118
  assert.deepStrictEqual(inspect(parser('a.\n1.\nc')), [['<ol type="a" data-type="lower-alpha"><li></li><li data-marker="1."></li><li data-marker="c."></li></ol>'], '']);
119
- assert.deepStrictEqual(inspect(parser('i. 1')), [['<ol type="i" data-type="lower-roman"><li id="index:1">1</li></ol>'], '']);
119
+ assert.deepStrictEqual(inspect(parser('i. 1')), [['<ol type="i" data-type="lower-roman"><li id="index::1">1</li></ol>'], '']);
120
120
  });
121
121
 
122
122
  it('checkbox', () => {
123
123
  assert.deepStrictEqual(inspect(parser('1. [ ]')), [['<ol class="checklist"><li><span class="checkbox">☐</span></li></ol>'], '']);
124
124
  assert.deepStrictEqual(inspect(parser('1. [x]')), [['<ol class="checklist"><li><span class="checkbox">☑</span></li></ol>'], '']);
125
125
  assert.deepStrictEqual(inspect(parser('1. [X]')), [['<ol class="checklist"><li><span class="checkbox">☑</span></li></ol>'], '']);
126
- assert.deepStrictEqual(inspect(parser('1. [X] 1')), [['<ol class="checklist"><li id="index:1"><span class="checkbox">☑</span>1</li></ol>'], '']);
126
+ assert.deepStrictEqual(inspect(parser('1. [X] 1')), [['<ol class="checklist"><li id="index::1"><span class="checkbox">☑</span>1</li></ol>'], '']);
127
127
  });
128
128
 
129
129
  it('indexer', () => {
130
- assert.deepStrictEqual(inspect(parser('1. [#a]')), [['<ol><li id="index:a"><a class="index" href="#index:a">a</a></li></ol>'], '']);
130
+ assert.deepStrictEqual(inspect(parser('1. [#a]')), [['<ol><li id="index::a"><a class="index" href="#index::a">a</a></li></ol>'], '']);
131
131
  assert.deepStrictEqual(inspect(parser('1. a [#]')), [['<ol><li>a<span class="indexer" data-index=""></span></li></ol>'], '']);
132
- assert.deepStrictEqual(inspect(parser('1. a [#b]')), [['<ol><li id="index:b">a<span class="indexer" data-index="b"></span></li></ol>'], '']);
133
- assert.deepStrictEqual(inspect(parser('1. [ ] [#a]')), [['<ol class="checklist"><li id="index:a"><span class="checkbox">☐</span><a class="index" href="#index:a">a</a></li></ol>'], '']);
134
- assert.deepStrictEqual(inspect(parser('1. [ ] a [#b]')), [['<ol class="checklist"><li id="index:b"><span class="checkbox">☐</span>a<span class="indexer" data-index="b"></span></li></ol>'], '']);
135
- assert.deepStrictEqual(inspect(parser('1. a [#]\n 1. c [#d]')), [['<ol><li>a<span class="indexer" data-index=""></span><ol><li id="index:d">c<span class="indexer" data-index="d"></span></li></ol></li></ol>'], '']);
136
- assert.deepStrictEqual(inspect(parser('1. a [#b]\n 1. c [#d]')), [['<ol><li id="index:b">a<span class="indexer" data-index="b"></span><ol><li id="index:d">c<span class="indexer" data-index="d"></span></li></ol></li></ol>'], '']);
132
+ assert.deepStrictEqual(inspect(parser('1. a [#b]')), [['<ol><li id="index::b">a<span class="indexer" data-index="b"></span></li></ol>'], '']);
133
+ assert.deepStrictEqual(inspect(parser('1. [ ] [#a]')), [['<ol class="checklist"><li id="index::a"><span class="checkbox">☐</span><a class="index" href="#index::a">a</a></li></ol>'], '']);
134
+ assert.deepStrictEqual(inspect(parser('1. [ ] a [#b]')), [['<ol class="checklist"><li id="index::b"><span class="checkbox">☐</span>a<span class="indexer" data-index="b"></span></li></ol>'], '']);
135
+ assert.deepStrictEqual(inspect(parser('1. a [#]\n 1. c [#d]')), [['<ol><li>a<span class="indexer" data-index=""></span><ol><li id="index::d">c<span class="indexer" data-index="d"></span></li></ol></li></ol>'], '']);
136
+ assert.deepStrictEqual(inspect(parser('1. a [#b]\n 1. c [#d]')), [['<ol><li id="index::b">a<span class="indexer" data-index="b"></span><ol><li id="index::d">c<span class="indexer" data-index="d"></span></li></ol></li></ol>'], '']);
137
137
  });
138
138
 
139
139
  });
@@ -0,0 +1,31 @@
1
+ import { pagebreak } from './pagebreak';
2
+ import { some } from '../../combinator';
3
+ import { inspect } from '../../debug.test';
4
+
5
+ describe('Unit: parser/block/pagebreak', () => {
6
+ describe('pagebreak', () => {
7
+ const parser = (source: string) => some(pagebreak)({ source, context: {} });
8
+
9
+ it('invalid', () => {
10
+ assert.deepStrictEqual(inspect(parser('')), undefined);
11
+ assert.deepStrictEqual(inspect(parser('\n')), undefined);
12
+ assert.deepStrictEqual(inspect(parser('=')), undefined);
13
+ assert.deepStrictEqual(inspect(parser('==')), undefined);
14
+ assert.deepStrictEqual(inspect(parser('==\n=')), undefined);
15
+ assert.deepStrictEqual(inspect(parser('===a')), undefined);
16
+ assert.deepStrictEqual(inspect(parser('===\na')), undefined);
17
+ assert.deepStrictEqual(inspect(parser('= = =')), undefined);
18
+ assert.deepStrictEqual(inspect(parser(' ===')), undefined);
19
+ assert.deepStrictEqual(inspect(parser('---')), undefined);
20
+ });
21
+
22
+ it('valid', () => {
23
+ assert.deepStrictEqual(inspect(parser('===')), [['<hr>'], '']);
24
+ assert.deepStrictEqual(inspect(parser('=== ')), [['<hr>'], '']);
25
+ assert.deepStrictEqual(inspect(parser('===\n')), [['<hr>'], '']);
26
+ assert.deepStrictEqual(inspect(parser('====')), [['<hr>'], '']);
27
+ });
28
+
29
+ });
30
+
31
+ });
@@ -0,0 +1,7 @@
1
+ import { PagebreakParser } from '../block';
2
+ import { block, line, focus } from '../../combinator';
3
+ import { html } from 'typed-dom/dom';
4
+
5
+ export const pagebreak: PagebreakParser = block(line(focus(
6
+ /^={3,}[^\S\n]*(?:$|\n)/,
7
+ () => [[html('hr')], ''])));
@@ -44,7 +44,7 @@ describe('Unit: parser/block/reply/cite', () => {
44
44
  assert.deepStrictEqual(inspect(parser('>>#')), [['<span class="cite">&gt;<a class="anchor" data-depth="1">&gt;#</a></span>', '<br>'], '']);
45
45
  assert.deepStrictEqual(inspect(parser('>>#\n')), [['<span class="cite">&gt;<a class="anchor" data-depth="1">&gt;#</a></span>', '<br>'], '']);
46
46
  assert.deepStrictEqual(inspect(parser('>>#a')), [['<span class="cite">&gt;<a class="anchor" data-depth="1">&gt;#a</a></span>', '<br>'], '']);
47
- assert.deepStrictEqual(inspect(parser('>>#index:a')), [['<span class="cite">&gt;<a class="anchor" data-depth="1">&gt;#index:a</a></span>', '<br>'], '']);
47
+ assert.deepStrictEqual(inspect(parser('>>#index::a')), [['<span class="cite">&gt;<a class="anchor" data-depth="1">&gt;#index::a</a></span>', '<br>'], '']);
48
48
  assert.deepStrictEqual(inspect(parser('>>#:~:text=a')), [['<span class="cite">&gt;<a class="anchor" data-depth="1">&gt;#:~:text=a</a></span>', '<br>'], '']);
49
49
  assert.deepStrictEqual(inspect(parser('>>http://host')), [['<span class="cite">&gt;<a class="anchor" href="http://host" target="_blank" data-depth="1">&gt;http://host</a></span>', '<br>'], '']);
50
50
  assert.deepStrictEqual(inspect(parser('>>http://host ')), [['<span class="cite">&gt;<a class="anchor" href="http://host" target="_blank" data-depth="1">&gt;http://host</a></span>', '<br>'], '']);
@@ -28,52 +28,52 @@ 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 id="index:-">-</li></ul>'], '']);
32
- assert.deepStrictEqual(inspect(parser('- -\n')), [['<ul><li id="index:-">-</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 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>'], '']);
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 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>'], '']);
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 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>'], '']);
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 id="index:1"><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 id="index:a"><a class="index" href="#index:a">a</a></li></ul>'], '']);
70
+ assert.deepStrictEqual(inspect(parser('- [#a]')), [['<ul><li id="index::a"><a class="index" href="#index::a">a</a></li></ul>'], '']);
71
71
  assert.deepStrictEqual(inspect(parser('- a [#]')), [['<ul><li>a<span class="indexer" data-index=""></span></li></ul>'], '']);
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 id="index:a"><span class="checkbox">☐</span><a class="index" href="#index:a">a</a></li></ul>'], '']);
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>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
- 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>'], '']);
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 id="index::a"><span class="checkbox">☐</span><a class="index" href="#index::a">a</a></li></ul>'], '']);
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>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
+ 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
 
79
79
  });
@@ -1,7 +1,7 @@
1
1
  import { MarkdownParser } from '../../markdown';
2
2
  import { union, reset, creation, open, fallback, recover } from '../combinator';
3
3
  import { emptyline } from './source';
4
- import { horizontalrule } from './block/horizontalrule';
4
+ import { pagebreak } from './block/pagebreak';
5
5
  import { heading } from './block/heading';
6
6
  import { ulist } from './block/ulist';
7
7
  import { olist } from './block/olist';
@@ -19,7 +19,7 @@ import { rnd0Z } from 'spica/random';
19
19
  import { html } from 'typed-dom/dom';
20
20
 
21
21
  export import BlockParser = MarkdownParser.BlockParser;
22
- export import HorizontalRuleParser = BlockParser.HorizontalRuleParser;
22
+ export import PagebreakParser = BlockParser.PagebreakParser;
23
23
  export import HeadingParser = BlockParser.HeadingParser;
24
24
  export import UListParser = BlockParser.UListParser;
25
25
  export import OListParser = BlockParser.OListParser;
@@ -38,7 +38,7 @@ export const block: BlockParser = creation(1, false, error(
38
38
  reset({ resources: { clock: 50 * 1000, recursion: 20 } },
39
39
  union([
40
40
  emptyline,
41
- horizontalrule,
41
+ pagebreak,
42
42
  heading,
43
43
  ulist,
44
44
  olist,
@@ -1,5 +1,5 @@
1
1
  import { AutolinkParser } from '../../inline';
2
- import { union, constraint, tails, verify, rewrite, open, convert, fmap, lazy } from '../../../combinator';
2
+ import { union, constraint, tails, 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';
@@ -12,10 +12,8 @@ export const account: AutolinkParser.AccountParser = lazy(() => fmap(rewrite(
12
12
  open(
13
13
  '@',
14
14
  tails([
15
- verify(
16
- str(/^[0-9a-z](?:(?:[0-9a-z]|-(?=\w)){0,61}[0-9a-z])?(?:\.[0-9a-z](?:(?:[0-9a-z]|-(?=\w)){0,61}[0-9a-z])?)*\//i),
17
- ([source]) => source.length <= 253 + 1),
18
- str(/^[a-z](?:-(?=[0-9a-z])|[0-9a-z]){0,63}/i),
15
+ str(/^[0-9a-z](?:(?:[0-9a-z]|-(?=\w)){0,61}[0-9a-z])?(?:\.[0-9a-z](?:(?:[0-9a-z]|-(?=\w)){0,61}[0-9a-z])?)*\//i),
16
+ str(/^[a-z][0-9a-z]*(?:-[0-9a-z]+)*/i),
19
17
  ]))),
20
18
  convert(
21
19
  source =>
@@ -28,8 +28,8 @@ describe('Unit: parser/inline/autolink/anchor', () => {
28
28
  assert.deepStrictEqual(inspect(parser('>>0-a')), [['<a class="anchor" href="?at=0-a">&gt;&gt;0-a</a>'], '']);
29
29
  assert.deepStrictEqual(inspect(parser('>>0-A')), [['<a class="anchor" href="?at=0-A">&gt;&gt;0-A</a>'], '']);
30
30
  assert.deepStrictEqual(inspect(parser('>>0--a')), [['<a class="anchor" href="?at=0">&gt;&gt;0</a>'], '--a']);
31
- assert.deepStrictEqual(inspect(parser('>>2000-01-31-23-59-59-999-JST')), [['<a class="anchor" href="?at=2000-01-31-23-59-59-999-JST">&gt;&gt;2000-01-31-23-59-59-999-JST</a>'], '']);
32
- assert.deepStrictEqual(inspect(parser('>>A/2000-01-31-23-59-59-JST')), [['<a class="anchor" href="/@A/timeline/2000-01-31-23-59-59-JST">&gt;&gt;A/2000-01-31-23-59-59-JST</a>'], '']);
31
+ assert.deepStrictEqual(inspect(parser('>>2000-0131-2359-59999')), [['<a class="anchor" href="?at=2000-0131-2359-59999">&gt;&gt;2000-0131-2359-59999</a>'], '']);
32
+ assert.deepStrictEqual(inspect(parser('>>A/2000-0131-2359-59')), [['<a class="anchor" href="/@A/timeline?at=2000-0131-2359-59">&gt;&gt;A/2000-0131-2359-59</a>'], '']);
33
33
  });
34
34
 
35
35
  });
@@ -7,8 +7,9 @@ import { define } from 'typed-dom/dom';
7
7
  // Timeline(pseudonym): user/tid
8
8
  // Thread(anonymous): cid
9
9
 
10
- // tid: YYYY-MM-DD-HH-MM-SS-TMZ
11
- // cid: YYYY-MM-DD-HH-MM-SS-mmm-TMZ
10
+ // UTC
11
+ // tid: YYYY-MMDD-HHMM-SS
12
+ // cid: YYYY-MMDD-HHMM-SSmmm
12
13
 
13
14
  // 内部表現はUnixTimeに統一する(時系列順)
14
15
  // 外部表現は投稿ごとに投稿者の投稿時のタイムゾーンに統一する(非時系列順)
@@ -21,7 +22,7 @@ export const anchor: AutolinkParser.AnchorParser = lazy(() => validate('>>', fma
21
22
  source =>
22
23
  `[${source}]{ ${
23
24
  source.includes('/')
24
- ? `/@${source.slice(2).replace('/', '/timeline/')}`
25
+ ? `/@${source.slice(2).replace('/', '/timeline?at=')}`
25
26
  : `?at=${source.slice(2)}`
26
27
  } }`,
27
28
  union([unsafelink])))),
@@ -16,8 +16,6 @@ describe('Unit: parser/inline/autolink/channel', () => {
16
16
  assert.deepStrictEqual(inspect(parser('@a#1@b')), [['@a#1@b'], '']);
17
17
  assert.deepStrictEqual(inspect(parser('@a#b#')), [['@a#b#'], '']);
18
18
  assert.deepStrictEqual(inspect(parser('@a#b#1')), [['@a#b#1'], '']);
19
- assert.deepStrictEqual(inspect(parser('@a#domain/b')), [['@a#domain/b'], '']);
20
- assert.deepStrictEqual(inspect(parser('@domain/a#domain/b')), [['@domain/a#domain/b'], '']);
21
19
  assert.deepStrictEqual(inspect(parser(' @a#b')), undefined);
22
20
  });
23
21
 
@@ -14,7 +14,6 @@ export const channel: AutolinkParser.ChannelParser = validate('@', bind(
14
14
  ]),
15
15
  (es, rest) => {
16
16
  const source = stringify(es);
17
- if (source.includes('/', source.indexOf('#'))) return;
18
17
  const el = es[0];
19
18
  const url = `${el.getAttribute('href')}?ch=${source.slice(source.indexOf('#') + 1).replace(/#/g, '+')}`;
20
19
  return [[define(el, { class: 'channel', href: url }, source)], rest];
@@ -33,7 +33,7 @@ describe('Unit: parser/inline/autolink/hashnum', () => {
33
33
  assert.deepStrictEqual(inspect(parser('あ#1')), [['あ#1'], '']);
34
34
  assert.deepStrictEqual(inspect(parser(' #1')), undefined);
35
35
  assert.deepStrictEqual(inspect(parser('#12345678901234567')), [['#12345678901234567'], '']);
36
- assert.deepStrictEqual(inspect(parser(`#${'1'.repeat(128)}a`)), [[`#${'1'.repeat(128)}a`], '']);
36
+ assert.deepStrictEqual(inspect(parser(`#${'1'.repeat(16)}a`)), [[`#${'1'.repeat(16)}a`], '']);
37
37
  });
38
38
 
39
39
  it('valid', () => {