securemark 0.233.2 → 0.233.3
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 +4 -0
- package/dist/securemark.js +9 -16
- package/markdown.d.ts +1 -1
- package/package-lock.json +4 -4
- package/package.json +1 -1
- package/src/parser/block/blockquote.test.ts +4 -4
- package/src/parser/block/paragraph.test.ts +14 -14
- package/src/parser/block/reply/cite.test.ts +11 -11
- package/src/parser/block/reply/cite.ts +3 -3
- package/src/parser/block/reply/quote.test.ts +2 -2
- package/src/parser/block/reply.test.ts +8 -8
- package/src/parser/inline/autolink/anchor.test.ts +6 -6
- package/src/parser/inline/autolink/anchor.ts +4 -7
- package/src/parser/inline/link.ts +2 -2
- package/src/parser/util.ts +1 -5
package/CHANGELOG.md
CHANGED
package/dist/securemark.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! securemark v0.233.
|
|
1
|
+
/*! securemark v0.233.3 https://github.com/falsandtru/securemark | (c) 2017, falsandtru | UNLICENSED */
|
|
2
2
|
require = function () {
|
|
3
3
|
function r(e, n, t) {
|
|
4
4
|
function o(i, f) {
|
|
@@ -5844,8 +5844,8 @@ require = function () {
|
|
|
5844
5844
|
const source_1 = _dereq_('../../source');
|
|
5845
5845
|
const typed_dom_1 = _dereq_('typed-dom');
|
|
5846
5846
|
exports.cite = (0, combinator_1.creator)((0, combinator_1.line)((0, combinator_1.fmap)((0, combinator_1.validate)('>>', (0, combinator_1.reverse)((0, combinator_1.tails)([
|
|
5847
|
-
(0, source_1.str)(/^>*(?=>>)/),
|
|
5848
|
-
|
|
5847
|
+
(0, source_1.str)(/^>*(?=>>[^>\s]+[^\S\n]*(?:$|\n))/),
|
|
5848
|
+
anchor_1.anchor
|
|
5849
5849
|
]))), ([el, quotes = '']) => [
|
|
5850
5850
|
(0, typed_dom_1.html)('span', { class: 'cite' }, (0, typed_dom_1.defrag)([
|
|
5851
5851
|
`${ quotes }>`,
|
|
@@ -6337,24 +6337,21 @@ require = function () {
|
|
|
6337
6337
|
function (_dereq_, module, exports) {
|
|
6338
6338
|
'use strict';
|
|
6339
6339
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
6340
|
-
exports.anchor =
|
|
6340
|
+
exports.anchor = void 0;
|
|
6341
6341
|
const combinator_1 = _dereq_('../../../combinator');
|
|
6342
6342
|
const link_1 = _dereq_('../link');
|
|
6343
|
-
const source_1 = _dereq_('../../source');
|
|
6344
6343
|
const typed_dom_1 = _dereq_('typed-dom');
|
|
6345
|
-
exports.
|
|
6346
|
-
exports.anchor = (0, combinator_1.lazy)(() => (0, combinator_1.validate)('>>', (0, combinator_1.fmap)((0, combinator_1.rewrite)((0, source_1.str)(exports.syntax), (0, combinator_1.context)({
|
|
6344
|
+
exports.anchor = (0, combinator_1.lazy)(() => (0, combinator_1.validate)('>>', (0, combinator_1.fmap)((0, combinator_1.focus)(/^>>[0-9a-z]+(?:-[0-9a-z]+)*(?![0-9A-Za-z@#:])/, (0, combinator_1.context)({
|
|
6347
6345
|
syntax: {
|
|
6348
6346
|
inline: {
|
|
6349
6347
|
link: true,
|
|
6350
6348
|
autolink: false
|
|
6351
6349
|
}
|
|
6352
6350
|
}
|
|
6353
|
-
}, (0, combinator_1.convert)(source => `[${ source }]{ ?
|
|
6351
|
+
}, (0, combinator_1.convert)(source => `[${ source }]{ ?at=${ source.slice(2) } }`, (0, combinator_1.union)([link_1.link])))), ([el]) => [(0, typed_dom_1.define)(el, { class: 'anchor' })])));
|
|
6354
6352
|
},
|
|
6355
6353
|
{
|
|
6356
6354
|
'../../../combinator': 27,
|
|
6357
|
-
'../../source': 128,
|
|
6358
6355
|
'../link': 114,
|
|
6359
6356
|
'typed-dom': 26
|
|
6360
6357
|
}
|
|
@@ -7281,13 +7278,13 @@ require = function () {
|
|
|
7281
7278
|
const url_1 = _dereq_('spica/url');
|
|
7282
7279
|
const optspec = { rel: ['nofollow'] };
|
|
7283
7280
|
(0, alias_1.ObjectSetPrototypeOf)(optspec, null);
|
|
7284
|
-
exports.link = (0, combinator_1.lazy)(() => (0, combinator_1.creator)(10, (0, combinator_1.bind)((0, combinator_1.
|
|
7281
|
+
exports.link = (0, combinator_1.lazy)(() => (0, combinator_1.creator)(10, (0, combinator_1.bind)((0, combinator_1.validate)([
|
|
7285
7282
|
'[',
|
|
7286
7283
|
'{'
|
|
7287
7284
|
], '}', '\n', (0, combinator_1.guard)(context => {
|
|
7288
7285
|
var _a, _b, _c;
|
|
7289
7286
|
return (_c = (_b = (_a = context.syntax) === null || _a === void 0 ? void 0 : _a.inline) === null || _b === void 0 ? void 0 : _b.link) !== null && _c !== void 0 ? _c : true;
|
|
7290
|
-
}, (0, combinator_1.tails)([
|
|
7287
|
+
}, (0, combinator_1.reverse)((0, combinator_1.tails)([
|
|
7291
7288
|
(0, combinator_1.context)({ syntax: { inline: { link: false } } }, (0, combinator_1.dup)((0, combinator_1.union)([
|
|
7292
7289
|
(0, combinator_1.surround)('[', inline_1.media, ']'),
|
|
7293
7290
|
(0, combinator_1.surround)('[', inline_1.shortmedia, ']'),
|
|
@@ -8760,11 +8757,7 @@ require = function () {
|
|
|
8760
8757
|
function isEndTightNodes(nodes) {
|
|
8761
8758
|
if (nodes.length === 0)
|
|
8762
8759
|
return true;
|
|
8763
|
-
|
|
8764
|
-
const node = nodes[i];
|
|
8765
|
-
return isVisible(node, -1);
|
|
8766
|
-
}
|
|
8767
|
-
return false;
|
|
8760
|
+
return isVisible(nodes[nodes.length - 1], -1);
|
|
8768
8761
|
}
|
|
8769
8762
|
exports.isEndTightNodes = isEndTightNodes;
|
|
8770
8763
|
function isVisible(node, strpos) {
|
package/markdown.d.ts
CHANGED
package/package-lock.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "securemark",
|
|
3
|
-
"version": "0.233.
|
|
3
|
+
"version": "0.233.3",
|
|
4
4
|
"lockfileVersion": 1,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"dependencies": {
|
|
@@ -3030,9 +3030,9 @@
|
|
|
3030
3030
|
"dev": true
|
|
3031
3031
|
},
|
|
3032
3032
|
"electron-to-chromium": {
|
|
3033
|
-
"version": "1.4.
|
|
3034
|
-
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.
|
|
3035
|
-
"integrity": "sha512-
|
|
3033
|
+
"version": "1.4.95",
|
|
3034
|
+
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.95.tgz",
|
|
3035
|
+
"integrity": "sha512-h2VAMV/hPtmAeiDkwA8c5sjS+cWt6GlQL4ERdrOUWu7cRIG5IRk9uwR9f0utP+hPJ9ZZsADTq9HpbuT46eBYAg==",
|
|
3036
3036
|
"dev": true
|
|
3037
3037
|
},
|
|
3038
3038
|
"elliptic": {
|
package/package.json
CHANGED
|
@@ -25,13 +25,13 @@ describe('Unit: parser/block/blockquote', () => {
|
|
|
25
25
|
assert.deepStrictEqual(inspect(parser('> a\nb')), [['<blockquote><pre>a<br>b</pre></blockquote>'], '']);
|
|
26
26
|
assert.deepStrictEqual(inspect(parser('> a\n b ')), [['<blockquote><pre>a<br> b </pre></blockquote>'], '']);
|
|
27
27
|
assert.deepStrictEqual(inspect(parser('> a\n>')), [['<blockquote><pre>a<br></pre></blockquote>'], '']);
|
|
28
|
-
assert.deepStrictEqual(inspect(parser('> a\n>>1')), [['<blockquote><pre>a<br><a href="?
|
|
28
|
+
assert.deepStrictEqual(inspect(parser('> a\n>>1')), [['<blockquote><pre>a<br><a href="?at=1" class="anchor">>>1</a></pre></blockquote>'], '']);
|
|
29
29
|
assert.deepStrictEqual(inspect(parser('> a\n> b ')), [['<blockquote><pre>a<br>b </pre></blockquote>'], '']);
|
|
30
30
|
assert.deepStrictEqual(inspect(parser('> a\n>\n')), [['<blockquote><pre>a<br></pre></blockquote>'], '']);
|
|
31
31
|
assert.deepStrictEqual(inspect(parser('> a\n>\nb')), [['<blockquote><pre>a<br><br>b</pre></blockquote>'], '']);
|
|
32
32
|
assert.deepStrictEqual(inspect(parser('> a\n>\n b ')), [['<blockquote><pre>a<br><br> b </pre></blockquote>'], '']);
|
|
33
33
|
assert.deepStrictEqual(inspect(parser('> a\n>\n>')), [['<blockquote><pre>a<br><br></pre></blockquote>'], '']);
|
|
34
|
-
assert.deepStrictEqual(inspect(parser('> a\n>\n>>1')), [['<blockquote><pre>a<br><br><a href="?
|
|
34
|
+
assert.deepStrictEqual(inspect(parser('> a\n>\n>>1')), [['<blockquote><pre>a<br><br><a href="?at=1" class="anchor">>>1</a></pre></blockquote>'], '']);
|
|
35
35
|
assert.deepStrictEqual(inspect(parser('> a\n>\n> b ')), [['<blockquote><pre>a<br><br>b </pre></blockquote>'], '']);
|
|
36
36
|
assert.deepStrictEqual(inspect(parser('> a\\\nb')), [['<blockquote><pre>a\\<br>b</pre></blockquote>'], '']);
|
|
37
37
|
assert.deepStrictEqual(inspect(parser('> a ')), [['<blockquote><pre> a </pre></blockquote>'], '']);
|
|
@@ -44,8 +44,8 @@ describe('Unit: parser/block/blockquote', () => {
|
|
|
44
44
|
assert.deepStrictEqual(inspect(parser('> !http://host')), [['<blockquote><pre>!<a href="http://host" target="_blank">http://host</a></pre></blockquote>'], '']);
|
|
45
45
|
assert.deepStrictEqual(inspect(parser('> #a')), [['<blockquote><pre><a href="/hashtags/a" class="hashtag">#a</a></pre></blockquote>'], '']);
|
|
46
46
|
assert.deepStrictEqual(inspect(parser('> @a#b')), [['<blockquote><pre><a href="/@a?ch=b" class="channel">@a#b</a></pre></blockquote>'], '']);
|
|
47
|
-
assert.deepStrictEqual(inspect(parser('> >>1\n> > b')), [['<blockquote><pre><a href="?
|
|
48
|
-
assert.deepStrictEqual(inspect(parser('> >>1\n> > b\n> c')), [['<blockquote><pre><a href="?
|
|
47
|
+
assert.deepStrictEqual(inspect(parser('> >>1\n> > b')), [['<blockquote><pre><a href="?at=1" class="anchor">>>1</a><br>> b</pre></blockquote>'], '']);
|
|
48
|
+
assert.deepStrictEqual(inspect(parser('> >>1\n> > b\n> c')), [['<blockquote><pre><a href="?at=1" class="anchor">>>1</a><br>> b<br>c</pre></blockquote>'], '']);
|
|
49
49
|
});
|
|
50
50
|
|
|
51
51
|
it('nest', () => {
|
|
@@ -29,21 +29,21 @@ describe('Unit: parser/block/paragraph', () => {
|
|
|
29
29
|
});
|
|
30
30
|
|
|
31
31
|
it('anchor', () => {
|
|
32
|
-
assert.deepStrictEqual(inspect(parser('>>1 a\nb')), [['<p><a href="?
|
|
33
|
-
assert.deepStrictEqual(inspect(parser('>>1 a\n>>2')), [['<p><a href="?
|
|
34
|
-
assert.deepStrictEqual(inspect(parser('>>1 a\n>>b')), [['<p><a href="?
|
|
35
|
-
assert.deepStrictEqual(inspect(parser('>>1 a\n>> b')), [['<p><a href="?
|
|
36
|
-
assert.deepStrictEqual(inspect(parser('>>11.')), [['<p><a href="?
|
|
37
|
-
assert.deepStrictEqual(inspect(parser('>>11 a')), [['<p><a href="?
|
|
38
|
-
assert.deepStrictEqual(inspect(parser('>>>11 a')), [['<p>><a href="?
|
|
39
|
-
assert.deepStrictEqual(inspect(parser('>> a\n>>1')), [['<p>>> a<br><a href="?
|
|
40
|
-
assert.deepStrictEqual(inspect(parser('a>>1')), [['<p>a<a href="?
|
|
41
|
-
assert.deepStrictEqual(inspect(parser('a >>1')), [['<p>a <a href="?
|
|
42
|
-
assert.deepStrictEqual(inspect(parser('a\n>>1')), [['<p>a<br><a href="?
|
|
43
|
-
assert.deepStrictEqual(inspect(parser('a\n>>1\nb')), [['<p>a<br><a href="?
|
|
32
|
+
assert.deepStrictEqual(inspect(parser('>>1 a\nb')), [['<p><a href="?at=1" class="anchor">>>1</a> a<br>b</p>'], '']);
|
|
33
|
+
assert.deepStrictEqual(inspect(parser('>>1 a\n>>2')), [['<p><a href="?at=1" class="anchor">>>1</a> a<br><a href="?at=2" class="anchor">>>2</a></p>'], '']);
|
|
34
|
+
assert.deepStrictEqual(inspect(parser('>>1 a\n>>b')), [['<p><a href="?at=1" class="anchor">>>1</a> a<br><a href="?at=b" class="anchor">>>b</a></p>'], '']);
|
|
35
|
+
assert.deepStrictEqual(inspect(parser('>>1 a\n>> b')), [['<p><a href="?at=1" class="anchor">>>1</a> a<br>>> b</p>'], '']);
|
|
36
|
+
assert.deepStrictEqual(inspect(parser('>>11.')), [['<p><a href="?at=11" class="anchor">>>11</a>.</p>'], '']);
|
|
37
|
+
assert.deepStrictEqual(inspect(parser('>>11 a')), [['<p><a href="?at=11" class="anchor">>>11</a> a</p>'], '']);
|
|
38
|
+
assert.deepStrictEqual(inspect(parser('>>>11 a')), [['<p>><a href="?at=11" class="anchor">>>11</a> a</p>'], '']);
|
|
39
|
+
assert.deepStrictEqual(inspect(parser('>> a\n>>1')), [['<p>>> a<br><a href="?at=1" class="anchor">>>1</a></p>'], '']);
|
|
40
|
+
assert.deepStrictEqual(inspect(parser('a>>1')), [['<p>a<a href="?at=1" class="anchor">>>1</a></p>'], '']);
|
|
41
|
+
assert.deepStrictEqual(inspect(parser('a >>1')), [['<p>a <a href="?at=1" class="anchor">>>1</a></p>'], '']);
|
|
42
|
+
assert.deepStrictEqual(inspect(parser('a\n>>1')), [['<p>a<br><a href="?at=1" class="anchor">>>1</a></p>'], '']);
|
|
43
|
+
assert.deepStrictEqual(inspect(parser('a\n>>1\nb')), [['<p>a<br><a href="?at=1" class="anchor">>>1</a><br>b</p>'], '']);
|
|
44
44
|
assert.deepStrictEqual(inspect(parser('a\n>> b\nc')), [['<p>a<br>>> b<br>c</p>'], '']);
|
|
45
|
-
assert.deepStrictEqual(inspect(parser(' >>1')), [['<p><a href="?
|
|
46
|
-
assert.deepStrictEqual(inspect(parser(' >>>1')), [['<p>><a href="?
|
|
45
|
+
assert.deepStrictEqual(inspect(parser(' >>1')), [['<p><a href="?at=1" class="anchor">>>1</a></p>'], '']);
|
|
46
|
+
assert.deepStrictEqual(inspect(parser(' >>>1')), [['<p>><a href="?at=1" class="anchor">>>1</a></p>'], '']);
|
|
47
47
|
});
|
|
48
48
|
|
|
49
49
|
it('comment', () => {
|
|
@@ -28,17 +28,17 @@ describe('Unit: parser/block/reply/cite', () => {
|
|
|
28
28
|
});
|
|
29
29
|
|
|
30
30
|
it('valid', () => {
|
|
31
|
-
assert.deepStrictEqual(inspect(parser('>>0')), [['<span class="cite">><a href="?
|
|
32
|
-
assert.deepStrictEqual(inspect(parser('>>0 ')), [['<span class="cite">><a href="?
|
|
33
|
-
assert.deepStrictEqual(inspect(parser('>>0\n')), [['<span class="cite">><a href="?
|
|
34
|
-
assert.deepStrictEqual(inspect(parser('>>>0')), [['<span class="cite">>><a href="?
|
|
35
|
-
assert.deepStrictEqual(inspect(parser('>>0\n1')), [['<span class="cite">><a href="?
|
|
36
|
-
assert.deepStrictEqual(inspect(parser('>>0\n>1')), [['<span class="cite">><a href="?
|
|
37
|
-
assert.deepStrictEqual(inspect(parser('>>0\n>>')), [['<span class="cite">><a href="?
|
|
38
|
-
assert.deepStrictEqual(inspect(parser('>>0\n>>1')), [['<span class="cite">><a href="?
|
|
39
|
-
assert.deepStrictEqual(inspect(parser('>>0\n>>>1')), [['<span class="cite">><a href="?
|
|
40
|
-
assert.deepStrictEqual(inspect(parser('>>>0\n>>')), [['<span class="cite">>><a href="?
|
|
41
|
-
assert.deepStrictEqual(inspect(parser('>>>0\n>>1')), [['<span class="cite">>><a href="?
|
|
31
|
+
assert.deepStrictEqual(inspect(parser('>>0')), [['<span class="cite">><a href="?at=0" class="anchor" data-depth="1">>0</a></span>', '<br>'], '']);
|
|
32
|
+
assert.deepStrictEqual(inspect(parser('>>0 ')), [['<span class="cite">><a href="?at=0" class="anchor" data-depth="1">>0</a></span>', '<br>'], '']);
|
|
33
|
+
assert.deepStrictEqual(inspect(parser('>>0\n')), [['<span class="cite">><a href="?at=0" class="anchor" data-depth="1">>0</a></span>', '<br>'], '']);
|
|
34
|
+
assert.deepStrictEqual(inspect(parser('>>>0')), [['<span class="cite">>><a href="?at=0" class="anchor" data-depth="2">>0</a></span>', '<br>'], '']);
|
|
35
|
+
assert.deepStrictEqual(inspect(parser('>>0\n1')), [['<span class="cite">><a href="?at=0" class="anchor" data-depth="1">>0</a></span>', '<br>'], '1']);
|
|
36
|
+
assert.deepStrictEqual(inspect(parser('>>0\n>1')), [['<span class="cite">><a href="?at=0" class="anchor" data-depth="1">>0</a></span>', '<br>'], '>1']);
|
|
37
|
+
assert.deepStrictEqual(inspect(parser('>>0\n>>')), [['<span class="cite">><a href="?at=0" class="anchor" data-depth="1">>0</a></span>', '<br>'], '>>']);
|
|
38
|
+
assert.deepStrictEqual(inspect(parser('>>0\n>>1')), [['<span class="cite">><a href="?at=0" class="anchor" data-depth="1">>0</a></span>', '<br>', '<span class="cite">><a href="?at=1" class="anchor" data-depth="1">>1</a></span>', '<br>'], '']);
|
|
39
|
+
assert.deepStrictEqual(inspect(parser('>>0\n>>>1')), [['<span class="cite">><a href="?at=0" class="anchor" data-depth="1">>0</a></span>', '<br>', '<span class="cite">>><a href="?at=1" class="anchor" data-depth="2">>1</a></span>', '<br>'], '']);
|
|
40
|
+
assert.deepStrictEqual(inspect(parser('>>>0\n>>')), [['<span class="cite">>><a href="?at=0" class="anchor" data-depth="2">>0</a></span>', '<br>'], '>>']);
|
|
41
|
+
assert.deepStrictEqual(inspect(parser('>>>0\n>>1')), [['<span class="cite">>><a href="?at=0" class="anchor" data-depth="2">>0</a></span>', '<br>', '<span class="cite">><a href="?at=1" class="anchor" data-depth="1">>1</a></span>', '<br>'], '']);
|
|
42
42
|
});
|
|
43
43
|
|
|
44
44
|
});
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { ReplyParser } from '../../block';
|
|
2
2
|
import { tails, line, validate, creator, reverse, fmap } from '../../../combinator';
|
|
3
|
-
import { anchor
|
|
3
|
+
import { anchor } from '../../inline/autolink/anchor';
|
|
4
4
|
import { str } from '../../source';
|
|
5
5
|
import { html, define, defrag } from 'typed-dom';
|
|
6
6
|
|
|
7
7
|
export const cite: ReplyParser.CiteParser = creator(line(fmap(validate(
|
|
8
8
|
'>>',
|
|
9
9
|
reverse(tails([
|
|
10
|
-
str(/^>*(?=>>)/),
|
|
11
|
-
|
|
10
|
+
str(/^>*(?=>>[^>\s]+[^\S\n]*(?:$|\n))/),
|
|
11
|
+
anchor,
|
|
12
12
|
]))),
|
|
13
13
|
([el, quotes = '']: [HTMLElement, string?]) => [
|
|
14
14
|
html('span', { class: 'cite' }, defrag([
|
|
@@ -47,8 +47,8 @@ describe('Unit: parser/block/reply/quote', () => {
|
|
|
47
47
|
assert.deepStrictEqual(inspect(parser('> 0\n>> 1')), [['<span class="quote">> 0<br>>> 1</span>', '<br>'], '']);
|
|
48
48
|
assert.deepStrictEqual(inspect(parser('>> 0\n> 1')), [['<span class="quote">>> 0<br>> 1</span>', '<br>'], '']);
|
|
49
49
|
assert.deepStrictEqual(inspect(parser('> \\')), [['<span class="quote">> \\</span>', '<br>'], '']);
|
|
50
|
-
assert.deepStrictEqual(inspect(parser('> >>0\n> > b')), [['<span class="quote">> <a href="?
|
|
51
|
-
assert.deepStrictEqual(inspect(parser('> >>0\n> > b\n> c')), [['<span class="quote">> <a href="?
|
|
50
|
+
assert.deepStrictEqual(inspect(parser('> >>0\n> > b')), [['<span class="quote">> <a href="?at=0" class="anchor">>>0</a><br>> > b</span>', '<br>'], '']);
|
|
51
|
+
assert.deepStrictEqual(inspect(parser('> >>0\n> > b\n> c')), [['<span class="quote">> <a href="?at=0" class="anchor">>>0</a><br>> > b<br>> c</span>', '<br>'], '']);
|
|
52
52
|
assert.deepStrictEqual(inspect(parser('> > a\n> > b\n> > c')), [['<span class="quote">> > a<br>> > b<br>> > c</span>', '<br>'], '']);
|
|
53
53
|
assert.deepStrictEqual(inspect(parser('> > > a\n> > > b')), [['<span class="quote">> > > a<br>> > > b</span>', '<br>'], '']);
|
|
54
54
|
assert.deepStrictEqual(inspect(parser('> #a')), [['<span class="quote">> <a href="/hashtags/a" class="hashtag">#a</a></span>', '<br>'], '']);
|
|
@@ -7,14 +7,14 @@ describe('Unit: parser/block/reply', () => {
|
|
|
7
7
|
const parser = (source: string) => some(reply)(source, {});
|
|
8
8
|
|
|
9
9
|
it('basic', () => {
|
|
10
|
-
assert.deepStrictEqual(inspect(parser('>>1')), [['<p><span class="cite">><a href="?
|
|
11
|
-
assert.deepStrictEqual(inspect(parser('>>1\na')), [['<p><span class="cite">><a href="?
|
|
12
|
-
assert.deepStrictEqual(inspect(parser('>>1\na\n>>2')), [['<p><span class="cite">><a href="?
|
|
13
|
-
assert.deepStrictEqual(inspect(parser('>>1\n>>2')), [['<p><span class="cite">><a href="?
|
|
14
|
-
assert.deepStrictEqual(inspect(parser('>>1\n> a')), [['<p><span class="cite">><a href="?
|
|
15
|
-
assert.deepStrictEqual(inspect(parser('>>1\n> a\nb')), [['<p><span class="cite">><a href="?
|
|
16
|
-
assert.deepStrictEqual(inspect(parser('>>1\n> a\n>>2')), [['<p><span class="cite">><a href="?
|
|
17
|
-
assert.deepStrictEqual(inspect(parser('>>1\n> a\n>> b')), [['<p><span class="cite">><a href="?
|
|
10
|
+
assert.deepStrictEqual(inspect(parser('>>1')), [['<p><span class="cite">><a href="?at=1" class="anchor" data-depth="1">>1</a></span></p>'], '']);
|
|
11
|
+
assert.deepStrictEqual(inspect(parser('>>1\na')), [['<p><span class="cite">><a href="?at=1" class="anchor" data-depth="1">>1</a></span><br>a</p>'], '']);
|
|
12
|
+
assert.deepStrictEqual(inspect(parser('>>1\na\n>>2')), [['<p><span class="cite">><a href="?at=1" class="anchor" data-depth="1">>1</a></span><br>a<br><a href="?at=2" class="anchor">>>2</a></p>'], '']);
|
|
13
|
+
assert.deepStrictEqual(inspect(parser('>>1\n>>2')), [['<p><span class="cite">><a href="?at=1" class="anchor" data-depth="1">>1</a></span><br><span class="cite">><a href="?at=2" class="anchor" data-depth="1">>2</a></span></p>'], '']);
|
|
14
|
+
assert.deepStrictEqual(inspect(parser('>>1\n> a')), [['<p><span class="cite">><a href="?at=1" class="anchor" data-depth="1">>1</a></span><br><span class="quote">> a</span></p>'], '']);
|
|
15
|
+
assert.deepStrictEqual(inspect(parser('>>1\n> a\nb')), [['<p><span class="cite">><a href="?at=1" class="anchor" data-depth="1">>1</a></span><br><span class="quote">> a</span><br>b</p>'], '']);
|
|
16
|
+
assert.deepStrictEqual(inspect(parser('>>1\n> a\n>>2')), [['<p><span class="cite">><a href="?at=1" class="anchor" data-depth="1">>1</a></span><br><span class="quote">> a</span><br><span class="cite">><a href="?at=2" class="anchor" data-depth="1">>2</a></span></p>'], '']);
|
|
17
|
+
assert.deepStrictEqual(inspect(parser('>>1\n> a\n>> b')), [['<p><span class="cite">><a href="?at=1" class="anchor" data-depth="1">>1</a></span><br><span class="quote">> a<br>>> b</span></p>'], '']);
|
|
18
18
|
});
|
|
19
19
|
|
|
20
20
|
});
|
|
@@ -22,12 +22,12 @@ describe('Unit: parser/inline/autolink/anchor', () => {
|
|
|
22
22
|
});
|
|
23
23
|
|
|
24
24
|
it('valid', () => {
|
|
25
|
-
assert.deepStrictEqual(inspect(parser('>>0')), [['<a href="?
|
|
26
|
-
assert.deepStrictEqual(inspect(parser('>>a')), [['<a href="?
|
|
27
|
-
assert.deepStrictEqual(inspect(parser('>>0-')), [['<a href="?
|
|
28
|
-
assert.deepStrictEqual(inspect(parser('>>0-a')), [['<a href="?
|
|
29
|
-
assert.deepStrictEqual(inspect(parser('>>0-A')), [['<a href="?
|
|
30
|
-
assert.deepStrictEqual(inspect(parser('>>0--a')), [['<a href="?
|
|
25
|
+
assert.deepStrictEqual(inspect(parser('>>0')), [['<a href="?at=0" class="anchor">>>0</a>'], '']);
|
|
26
|
+
assert.deepStrictEqual(inspect(parser('>>a')), [['<a href="?at=a" class="anchor">>>a</a>'], '']);
|
|
27
|
+
assert.deepStrictEqual(inspect(parser('>>0-')), [['<a href="?at=0" class="anchor">>>0</a>'], '-']);
|
|
28
|
+
assert.deepStrictEqual(inspect(parser('>>0-a')), [['<a href="?at=0-a" class="anchor">>>0-a</a>'], '']);
|
|
29
|
+
assert.deepStrictEqual(inspect(parser('>>0-A')), [['<a href="?at=0" class="anchor">>>0</a>'], '-A']);
|
|
30
|
+
assert.deepStrictEqual(inspect(parser('>>0--a')), [['<a href="?at=0" class="anchor">>>0</a>'], '--a']);
|
|
31
31
|
});
|
|
32
32
|
|
|
33
33
|
});
|
|
@@ -1,18 +1,15 @@
|
|
|
1
1
|
import { AutolinkParser } from '../../inline';
|
|
2
|
-
import { union, validate,
|
|
2
|
+
import { union, validate, focus, context, convert, fmap, lazy } from '../../../combinator';
|
|
3
3
|
import { link } from '../link';
|
|
4
|
-
import { str } from '../../source';
|
|
5
4
|
import { define } from 'typed-dom';
|
|
6
5
|
|
|
7
|
-
export const
|
|
8
|
-
|
|
9
|
-
export const anchor: AutolinkParser.AnchorParser = lazy(() => validate('>>', fmap(rewrite(
|
|
10
|
-
str(syntax),
|
|
6
|
+
export const anchor: AutolinkParser.AnchorParser = lazy(() => validate('>>', fmap(focus(
|
|
7
|
+
/^>>[0-9a-z]+(?:-[0-9a-z]+)*(?![0-9A-Za-z@#:])/,
|
|
11
8
|
context({ syntax: { inline: {
|
|
12
9
|
link: true,
|
|
13
10
|
autolink: false,
|
|
14
11
|
}}},
|
|
15
12
|
convert(
|
|
16
|
-
source => `[${source}]{ ?
|
|
13
|
+
source => `[${source}]{ ?at=${source.slice(2)} }`,
|
|
17
14
|
union([link])))),
|
|
18
15
|
([el]) => [define(el, { class: 'anchor' })])));
|
|
@@ -16,10 +16,10 @@ const optspec = {
|
|
|
16
16
|
} as const;
|
|
17
17
|
ObjectSetPrototypeOf(optspec, null);
|
|
18
18
|
|
|
19
|
-
export const link: LinkParser = lazy(() => creator(10, bind(
|
|
19
|
+
export const link: LinkParser = lazy(() => creator(10, bind(
|
|
20
20
|
validate(['[', '{'], '}', '\n',
|
|
21
21
|
guard(context => context.syntax?.inline?.link ?? true,
|
|
22
|
-
tails([
|
|
22
|
+
reverse(tails([
|
|
23
23
|
context({ syntax: { inline: {
|
|
24
24
|
link: false,
|
|
25
25
|
}}},
|
package/src/parser/util.ts
CHANGED
|
@@ -126,11 +126,7 @@ export function isStartTightNodes(nodes: readonly (HTMLElement | string)[]): boo
|
|
|
126
126
|
}
|
|
127
127
|
export function isEndTightNodes(nodes: readonly (HTMLElement | string)[]): boolean {
|
|
128
128
|
if (nodes.length === 0) return true;
|
|
129
|
-
|
|
130
|
-
const node = nodes[i];
|
|
131
|
-
return isVisible(node, -1);
|
|
132
|
-
}
|
|
133
|
-
return false;
|
|
129
|
+
return isVisible(nodes[nodes.length - 1], -1);
|
|
134
130
|
}
|
|
135
131
|
function isVisible(node: HTMLElement | string, strpos?: number): boolean {
|
|
136
132
|
switch (typeof node) {
|