securemark 0.275.1 → 0.276.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 +8 -0
- package/README.md +1 -1
- package/dist/index.js +7 -11
- package/markdown.d.ts +5 -5
- package/package.json +1 -1
- package/src/parser/block/dlist.test.ts +2 -2
- package/src/parser/block/heading.test.ts +19 -21
- package/src/parser/block/olist.test.ts +7 -7
- package/src/parser/block/ulist.test.ts +7 -7
- package/src/parser/inline/extension/index.ts +1 -1
- package/src/parser/inline/extension/indexer.test.ts +18 -19
- package/src/parser/inline/extension/indexer.ts +7 -12
package/CHANGELOG.md
CHANGED
package/README.md
CHANGED
|
@@ -53,7 +53,7 @@ Secure markdown renderer working on browsers for user input data.
|
|
|
53
53
|
- Shortmedia (!https://host/image.png, !https://youtu.be/...)
|
|
54
54
|
- Syntex highlight (```lang filename)
|
|
55
55
|
- LaTeX ($expr$, ${expr}$, $$)
|
|
56
|
-
- Index (# title [
|
|
56
|
+
- Index ([#index], # title [|signature], ~ term [|signature])
|
|
57
57
|
- Figure (~~~figure $fig-name)
|
|
58
58
|
- Label ($fig-name, [$fig-name])
|
|
59
59
|
- Annotation (((annotation)))
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! securemark v0.
|
|
1
|
+
/*! securemark v0.276.0 https://github.com/falsandtru/securemark | (c) 2017, falsandtru | UNLICENSED License */
|
|
2
2
|
(function webpackUniversalModuleDefinition(root, factory) {
|
|
3
3
|
if(typeof exports === 'object' && typeof module === 'object')
|
|
4
4
|
module.exports = factory(require("Prism"), require("DOMPurify"));
|
|
@@ -6140,19 +6140,19 @@ exports.extension = (0, combinator_1.validate)(['[', '$'], (0, combinator_1.unio
|
|
|
6140
6140
|
Object.defineProperty(exports, "__esModule", ({
|
|
6141
6141
|
value: true
|
|
6142
6142
|
}));
|
|
6143
|
-
exports.index = void 0;
|
|
6143
|
+
exports.signature = exports.index = void 0;
|
|
6144
6144
|
const combinator_1 = __webpack_require__(2087);
|
|
6145
6145
|
const inline_1 = __webpack_require__(1160);
|
|
6146
6146
|
const indexee_1 = __webpack_require__(1269);
|
|
6147
6147
|
const source_1 = __webpack_require__(6743);
|
|
6148
6148
|
const visibility_1 = __webpack_require__(7618);
|
|
6149
6149
|
const dom_1 = __webpack_require__(3252);
|
|
6150
|
-
exports.index = (0, combinator_1.lazy)(() => (0, combinator_1.validate)('[#', (0, combinator_1.fmap)((0, indexee_1.indexee)((0, combinator_1.surround)('[#', (0, combinator_1.constraint)(64 /* State.index */, false, (0, combinator_1.syntax)(128 /* Syntax.index */, 2, 1, 502 /* State.linkers */ | 8 /* State.media */, (0, visibility_1.startTight)((0, combinator_1.open)((0, source_1.stropt)('|'), (0, combinator_1.some)((0, combinator_1.union)([signature, inline_1.inline]), ']', [[/^\\?\n/, 9], [']', 2]]), true)))), ']', false, ([, ns], rest) => [[(0, dom_1.html)('a', (0, visibility_1.trimNodeEnd)((0, dom_1.defrag)(ns)))], rest])), ([el]) => [(0, dom_1.define)(el, {
|
|
6150
|
+
exports.index = (0, combinator_1.lazy)(() => (0, combinator_1.validate)('[#', (0, combinator_1.fmap)((0, indexee_1.indexee)((0, combinator_1.surround)('[#', (0, combinator_1.constraint)(64 /* State.index */, false, (0, combinator_1.syntax)(128 /* Syntax.index */, 2, 1, 502 /* State.linkers */ | 8 /* State.media */, (0, visibility_1.startTight)((0, combinator_1.open)((0, source_1.stropt)('|'), (0, combinator_1.some)((0, combinator_1.union)([exports.signature, inline_1.inline]), ']', [[/^\\?\n/, 9], [']', 2]]), true)))), ']', false, ([, ns], rest) => [[(0, dom_1.html)('a', (0, visibility_1.trimNodeEnd)((0, dom_1.defrag)(ns)))], rest])), ([el]) => [(0, dom_1.define)(el, {
|
|
6151
6151
|
id: el.id ? null : undefined,
|
|
6152
6152
|
class: 'index',
|
|
6153
6153
|
href: el.id ? `#${el.id}` : undefined
|
|
6154
6154
|
})])));
|
|
6155
|
-
|
|
6155
|
+
exports.signature = (0, combinator_1.lazy)(() => (0, combinator_1.creation)((0, combinator_1.fmap)((0, combinator_1.open)('|', (0, visibility_1.startTight)((0, combinator_1.some)((0, combinator_1.union)([bracket, source_1.txt]), ']'))), ns => [(0, dom_1.html)('span', {
|
|
6156
6156
|
class: 'indexer',
|
|
6157
6157
|
'data-index': (0, indexee_1.identity)(undefined, ns.join('')).slice(7)
|
|
6158
6158
|
})])));
|
|
@@ -6285,14 +6285,10 @@ exports.indexer = void 0;
|
|
|
6285
6285
|
const combinator_1 = __webpack_require__(2087);
|
|
6286
6286
|
const index_1 = __webpack_require__(4479);
|
|
6287
6287
|
const dom_1 = __webpack_require__(3252);
|
|
6288
|
-
exports.indexer = (0, combinator_1.
|
|
6289
|
-
href: '#'
|
|
6290
|
-
})], '']), index_1.index])), /^\s*$/),
|
|
6291
|
-
// Indexer is invisible but invalids must be visible.
|
|
6292
|
-
([el]) => el.getElementsByClassName('invalid').length === 0), ([el]) => [(0, dom_1.html)('span', {
|
|
6288
|
+
exports.indexer = (0, combinator_1.surround)(/^\s+\[(?=\|\S)/, (0, combinator_1.state)(64 /* State.index */, false, (0, combinator_1.union)([index_1.signature, (0, combinator_1.creation)((0, combinator_1.focus)(/^\|(?=\])/, () => [[(0, dom_1.html)('span', {
|
|
6293
6289
|
class: 'indexer',
|
|
6294
|
-
'data-index':
|
|
6295
|
-
})]));
|
|
6290
|
+
'data-index': ''
|
|
6291
|
+
})], '']))])), /^\]\s*$/);
|
|
6296
6292
|
|
|
6297
6293
|
/***/ }),
|
|
6298
6294
|
|
package/markdown.d.ts
CHANGED
|
@@ -744,7 +744,6 @@ export namespace MarkdownParser {
|
|
|
744
744
|
}
|
|
745
745
|
}
|
|
746
746
|
export interface ExtensionParser extends
|
|
747
|
-
// [#abc]
|
|
748
747
|
Inline<'extension'>,
|
|
749
748
|
Parser<HTMLElement | string, Context, [
|
|
750
749
|
ExtensionParser.IndexParser,
|
|
@@ -755,6 +754,7 @@ export namespace MarkdownParser {
|
|
|
755
754
|
export namespace ExtensionParser {
|
|
756
755
|
export interface IndexParser extends
|
|
757
756
|
// [#index]
|
|
757
|
+
// [#index|signature]
|
|
758
758
|
Inline<'extension/index'>,
|
|
759
759
|
Parser<HTMLAnchorElement, Context, [
|
|
760
760
|
IndexParser.SignatureParser,
|
|
@@ -791,12 +791,12 @@ export namespace MarkdownParser {
|
|
|
791
791
|
}
|
|
792
792
|
}
|
|
793
793
|
export interface IndexerParser extends
|
|
794
|
-
// [
|
|
795
|
-
// [
|
|
794
|
+
// [|signature]
|
|
795
|
+
// [|]
|
|
796
796
|
Inline<'extension/indexer'>,
|
|
797
797
|
Parser<HTMLElement, Context, [
|
|
798
|
-
|
|
799
|
-
|
|
798
|
+
IndexParser.SignatureParser,
|
|
799
|
+
Parser<HTMLSpanElement, Context, []>,
|
|
800
800
|
]> {
|
|
801
801
|
}
|
|
802
802
|
export interface LabelParser extends
|
package/package.json
CHANGED
|
@@ -65,8 +65,8 @@ describe('Unit: parser/block/dlist', () => {
|
|
|
65
65
|
});
|
|
66
66
|
|
|
67
67
|
it('index', () => {
|
|
68
|
-
assert.deepStrictEqual(inspect(parser('~ a [
|
|
69
|
-
assert.deepStrictEqual(inspect(parser('~ a [
|
|
68
|
+
assert.deepStrictEqual(inspect(parser('~ a [|b]')), [['<dl><dt id="index::b">a<span class="indexer" data-index="b"></span></dt><dd></dd></dl>'], '']);
|
|
69
|
+
assert.deepStrictEqual(inspect(parser('~ a [|b]\\')), [['<dl><dt id="index::a_b">a <span class="invalid">b</span></dt><dd></dd></dl>'], '']);
|
|
70
70
|
assert.deepStrictEqual(inspect(parser('~ A')), [['<dl><dt id="index::A">A</dt><dd></dd></dl>'], '']);
|
|
71
71
|
assert.deepStrictEqual(inspect(parser('~ _A_')), [['<dl><dt id="index::A"><em>A</em></dt><dd></dd></dl>'], '']);
|
|
72
72
|
assert.deepStrictEqual(inspect(parser('~ `A`')), [['<dl><dt id="index::`A`"><code data-src="`A`">A</code></dt><dd></dd></dl>'], '']);
|
|
@@ -60,27 +60,25 @@ describe('Unit: parser/block/heading', () => {
|
|
|
60
60
|
});
|
|
61
61
|
|
|
62
62
|
it('indexer', () => {
|
|
63
|
-
assert.deepStrictEqual(inspect(parser('# [
|
|
64
|
-
assert.deepStrictEqual(inspect(parser('# a[
|
|
65
|
-
assert.deepStrictEqual(inspect(parser('# a [
|
|
66
|
-
assert.deepStrictEqual(inspect(parser('# a [
|
|
67
|
-
assert.deepStrictEqual(inspect(parser('# a [
|
|
68
|
-
assert.deepStrictEqual(inspect(parser('# a [
|
|
69
|
-
assert.deepStrictEqual(inspect(parser('# a [
|
|
70
|
-
assert.deepStrictEqual(inspect(parser('# a [
|
|
71
|
-
assert.deepStrictEqual(inspect(parser('# a [
|
|
72
|
-
assert.deepStrictEqual(inspect(parser('# a [
|
|
73
|
-
assert.deepStrictEqual(inspect(parser('# a [
|
|
74
|
-
assert.deepStrictEqual(inspect(parser('# a [
|
|
75
|
-
assert.deepStrictEqual(inspect(parser('# a [
|
|
76
|
-
assert.deepStrictEqual(inspect(parser('# a [
|
|
77
|
-
assert.deepStrictEqual(inspect(parser('# a [
|
|
78
|
-
assert.deepStrictEqual(inspect(parser('# a [
|
|
79
|
-
assert.deepStrictEqual(inspect(parser('# a
|
|
80
|
-
assert.deepStrictEqual(inspect(parser('# a
|
|
81
|
-
assert.deepStrictEqual(inspect(parser('
|
|
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"><span class="invalid">a</span></h1>'], '']);
|
|
64
|
+
assert.deepStrictEqual(inspect(parser('# a[|b]')), [['<h1 id="index::ab">a<span class="invalid">b</span></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 <span class="invalid">b</span></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="invalid">b</span><span class="indexer" data-index="c"></span></h1>'], '']);
|
|
79
|
+
assert.deepStrictEqual(inspect(parser('# a [|b] \n')), [['<h1 id="index::b">a<span class="indexer" data-index="b"></span></h1>'], '']);
|
|
80
|
+
assert.deepStrictEqual(inspect(parser('# a \\[|b]')), [['<h1 id="index::a_[|b]">a [|b]</h1>'], '']);
|
|
81
|
+
assert.deepStrictEqual(inspect(parser('## a [|b] [|c]')), [['<h2 id="index::c">a <span class="invalid">b</span><span class="indexer" data-index="c"></span></h2>'], '']);
|
|
84
82
|
});
|
|
85
83
|
|
|
86
84
|
});
|
|
@@ -127,13 +127,13 @@ describe('Unit: parser/block/olist', () => {
|
|
|
127
127
|
});
|
|
128
128
|
|
|
129
129
|
it('indexer', () => {
|
|
130
|
-
assert.deepStrictEqual(inspect(parser('1. [
|
|
131
|
-
assert.deepStrictEqual(inspect(parser('1. a [
|
|
132
|
-
assert.deepStrictEqual(inspect(parser('1. a [
|
|
133
|
-
assert.deepStrictEqual(inspect(parser('1. [ ] [
|
|
134
|
-
assert.deepStrictEqual(inspect(parser('1. [ ] a [
|
|
135
|
-
assert.deepStrictEqual(inspect(parser('1. a [
|
|
136
|
-
assert.deepStrictEqual(inspect(parser('1. a [
|
|
130
|
+
assert.deepStrictEqual(inspect(parser('1. [|a]')), [['<ol><li id="index::a"><span class="invalid">a</span></li></ol>'], '']);
|
|
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><span class="invalid">a</span></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
|
});
|
|
@@ -67,13 +67,13 @@ describe('Unit: parser/block/ulist', () => {
|
|
|
67
67
|
});
|
|
68
68
|
|
|
69
69
|
it('indexer', () => {
|
|
70
|
-
assert.deepStrictEqual(inspect(parser('- [
|
|
71
|
-
assert.deepStrictEqual(inspect(parser('- a [
|
|
72
|
-
assert.deepStrictEqual(inspect(parser('- a [
|
|
73
|
-
assert.deepStrictEqual(inspect(parser('- [ ] [
|
|
74
|
-
assert.deepStrictEqual(inspect(parser('- [ ] a [
|
|
75
|
-
assert.deepStrictEqual(inspect(parser('- a [
|
|
76
|
-
assert.deepStrictEqual(inspect(parser('- a [
|
|
70
|
+
assert.deepStrictEqual(inspect(parser('- [|a]')), [['<ul><li id="index::a"><span class="invalid">a</span></li></ul>'], '']);
|
|
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><span class="invalid">a</span></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
|
});
|
|
@@ -30,7 +30,7 @@ export const index: IndexParser = lazy(() => validate('[#', fmap(indexee(surroun
|
|
|
30
30
|
}),
|
|
31
31
|
])));
|
|
32
32
|
|
|
33
|
-
const signature: IndexParser.SignatureParser = lazy(() => creation(fmap(open(
|
|
33
|
+
export const signature: IndexParser.SignatureParser = lazy(() => creation(fmap(open(
|
|
34
34
|
'|',
|
|
35
35
|
startTight(some(union([bracket, txt]), ']'))),
|
|
36
36
|
ns => [
|
|
@@ -8,29 +8,28 @@ describe('Unit: parser/inline/extension/indexer', () => {
|
|
|
8
8
|
|
|
9
9
|
it('invalid', () => {
|
|
10
10
|
assert.deepStrictEqual(inspect(parser('')), undefined);
|
|
11
|
-
assert.deepStrictEqual(inspect(parser('[
|
|
11
|
+
assert.deepStrictEqual(inspect(parser('[|a]')), undefined);
|
|
12
12
|
assert.deepStrictEqual(inspect(parser(' ')), undefined);
|
|
13
|
-
assert.deepStrictEqual(inspect(parser('
|
|
14
|
-
assert.deepStrictEqual(inspect(parser('
|
|
15
|
-
assert.deepStrictEqual(inspect(parser(' [
|
|
16
|
-
assert.deepStrictEqual(inspect(parser(' [
|
|
17
|
-
assert.deepStrictEqual(inspect(parser(' [
|
|
18
|
-
assert.deepStrictEqual(inspect(parser(' [#&a;]')), undefined);
|
|
13
|
+
assert.deepStrictEqual(inspect(parser(' |')), undefined);
|
|
14
|
+
assert.deepStrictEqual(inspect(parser(' |a')), undefined);
|
|
15
|
+
assert.deepStrictEqual(inspect(parser(' [| ]')), undefined);
|
|
16
|
+
assert.deepStrictEqual(inspect(parser(' [|]]')), undefined);
|
|
17
|
+
assert.deepStrictEqual(inspect(parser(' [|a]]')), undefined);
|
|
19
18
|
});
|
|
20
19
|
|
|
21
20
|
it('valid', () => {
|
|
22
|
-
assert.deepStrictEqual(inspect(parser(' [
|
|
23
|
-
assert.deepStrictEqual(inspect(parser(' [
|
|
24
|
-
assert.deepStrictEqual(inspect(parser(' [
|
|
25
|
-
assert.deepStrictEqual(inspect(parser(' [
|
|
26
|
-
assert.deepStrictEqual(inspect(parser(' [
|
|
27
|
-
assert.deepStrictEqual(inspect(parser(' [
|
|
28
|
-
assert.deepStrictEqual(inspect(parser(' [
|
|
29
|
-
assert.deepStrictEqual(inspect(parser(' [
|
|
30
|
-
assert.deepStrictEqual(inspect(parser(' [
|
|
31
|
-
assert.deepStrictEqual(inspect(parser(' [
|
|
32
|
-
assert.deepStrictEqual(inspect(parser(' [
|
|
33
|
-
assert.deepStrictEqual(inspect(parser(' [
|
|
21
|
+
assert.deepStrictEqual(inspect(parser(' [|]')), [['<span class="indexer" data-index=""></span>'], '']);
|
|
22
|
+
assert.deepStrictEqual(inspect(parser(' [|a]')), [['<span class="indexer" data-index="a"></span>'], '']);
|
|
23
|
+
assert.deepStrictEqual(inspect(parser(' [|a] ')), [['<span class="indexer" data-index="a"></span>'], '']);
|
|
24
|
+
assert.deepStrictEqual(inspect(parser(' [|a ]')), [['<span class="indexer" data-index="a"></span>'], '']);
|
|
25
|
+
assert.deepStrictEqual(inspect(parser(' [|a ]')), [['<span class="indexer" data-index="a"></span>'], '']);
|
|
26
|
+
assert.deepStrictEqual(inspect(parser(' [|a b]')), [['<span class="indexer" data-index="a_b"></span>'], '']);
|
|
27
|
+
assert.deepStrictEqual(inspect(parser(' [|a b]')), [['<span class="indexer" data-index="a_b"></span>'], '']);
|
|
28
|
+
assert.deepStrictEqual(inspect(parser(' [|A]')), [['<span class="indexer" data-index="A"></span>'], '']);
|
|
29
|
+
assert.deepStrictEqual(inspect(parser(' [|*A*]')), [['<span class="indexer" data-index="*A*"></span>'], '']);
|
|
30
|
+
assert.deepStrictEqual(inspect(parser(' [|`A`]')), [['<span class="indexer" data-index="`A`"></span>'], '']);
|
|
31
|
+
assert.deepStrictEqual(inspect(parser(' [|${A}$]')), [['<span class="indexer" data-index="${A}$"></span>'], '']);
|
|
32
|
+
assert.deepStrictEqual(inspect(parser(' [|a]')), [['<span class="indexer" data-index="a"></span>'], '']);
|
|
34
33
|
});
|
|
35
34
|
|
|
36
35
|
});
|
|
@@ -1,19 +1,14 @@
|
|
|
1
1
|
import { ExtensionParser } from '../../inline';
|
|
2
|
-
import { union, creation, state,
|
|
3
|
-
import {
|
|
2
|
+
import { union, creation, state, focus, surround } from '../../../combinator';
|
|
3
|
+
import { signature } from './index';
|
|
4
4
|
import { State } from '../../context';
|
|
5
5
|
import { html } from 'typed-dom/dom';
|
|
6
6
|
|
|
7
|
-
export const indexer: ExtensionParser.IndexerParser =
|
|
8
|
-
/^\s
|
|
7
|
+
export const indexer: ExtensionParser.IndexerParser = surround(
|
|
8
|
+
/^\s+\[(?=\|\S)/,
|
|
9
9
|
state(State.index, false,
|
|
10
10
|
union([
|
|
11
|
-
|
|
12
|
-
index,
|
|
11
|
+
signature,
|
|
12
|
+
creation(focus(/^\|(?=\])/, () => [[html('span', { class: 'indexer', 'data-index': '' })], ''])),
|
|
13
13
|
])),
|
|
14
|
-
/^\s*$/)
|
|
15
|
-
// Indexer is invisible but invalids must be visible.
|
|
16
|
-
([el]) => el.getElementsByClassName('invalid').length === 0),
|
|
17
|
-
([el]) => [
|
|
18
|
-
html('span', { class: 'indexer', 'data-index': el.getAttribute('href')!.slice(1).replace(/^\w+:\w*:/, '') }),
|
|
19
|
-
]));
|
|
14
|
+
/^\]\s*$/);
|