securemark 0.237.1 → 0.237.2
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 +35 -29
- package/package-lock.json +1 -1
- package/package.json +1 -1
- package/src/parser/block/codeblock.test.ts +5 -2
- package/src/parser/block/codeblock.ts +42 -24
- package/src/parser/inline/comment.ts +1 -1
- package/src/parser/processor/figure.test.ts +5 -5
- package/src/parser/processor/figure.ts +1 -1
package/CHANGELOG.md
CHANGED
package/dist/securemark.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! securemark v0.237.
|
|
1
|
+
/*! securemark v0.237.2 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) {
|
|
@@ -4753,41 +4753,49 @@ require = function () {
|
|
|
4753
4753
|
const parser_1 = _dereq_('../../combinator/data/parser');
|
|
4754
4754
|
const combinator_1 = _dereq_('../../combinator');
|
|
4755
4755
|
const autolink_1 = _dereq_('../autolink');
|
|
4756
|
-
const source_1 = _dereq_('../source');
|
|
4757
4756
|
const typed_dom_1 = _dereq_('typed-dom');
|
|
4758
|
-
const
|
|
4759
|
-
const
|
|
4760
|
-
const language = /^[0-9a-z]+(?:-[a-z][0-9a-z]*)*$/;
|
|
4757
|
+
const opener = /^(`{3,})(?!`)([^\n]*)(?:$|\n)/;
|
|
4758
|
+
const language = /^[0-9a-z]+(?:-[a-z][0-9a-z]*)*$/i;
|
|
4761
4759
|
exports.segment = (0, combinator_1.block)((0, combinator_1.validate)('```', (0, combinator_1.clear)((0, combinator_1.fence)(opener, 300))));
|
|
4762
4760
|
exports.segment_ = (0, combinator_1.block)((0, combinator_1.validate)('```', (0, combinator_1.clear)((0, combinator_1.fence)(opener, 300, false))), false);
|
|
4763
|
-
exports.codeblock = (0, combinator_1.block)((0, combinator_1.validate)('```', (0, combinator_1.fmap)((0, combinator_1.fence)(opener, 300), ([body, closer, opener, delim,
|
|
4764
|
-
var _a, _b, _c, _d;
|
|
4765
|
-
|
|
4766
|
-
|
|
4767
|
-
|
|
4768
|
-
|
|
4769
|
-
|
|
4770
|
-
|
|
4771
|
-
|
|
4772
|
-
|
|
4773
|
-
|
|
4774
|
-
|
|
4761
|
+
exports.codeblock = (0, combinator_1.block)((0, combinator_1.validate)('```', (0, combinator_1.fmap)((0, combinator_1.fence)(opener, 300), ([body, closer, opener, delim, param], _, context) => {
|
|
4762
|
+
var _a, _b, _c, _d, _e, _f;
|
|
4763
|
+
const params = (_b = (_a = param.match(/(?:\\.?|\S)+/g)) === null || _a === void 0 ? void 0 : _a.reduce((params, value, i) => {
|
|
4764
|
+
var _a, _b, _c;
|
|
4765
|
+
let name;
|
|
4766
|
+
switch (true) {
|
|
4767
|
+
case i === 0 && value[0] === param[0] && language.test(value):
|
|
4768
|
+
name = 'lang';
|
|
4769
|
+
value = value.toLowerCase();
|
|
4770
|
+
break;
|
|
4771
|
+
case /^\d+(?:[,-]\d+)*$/.test(value):
|
|
4772
|
+
name = 'line';
|
|
4773
|
+
break;
|
|
4774
|
+
default:
|
|
4775
|
+
name = 'path';
|
|
4776
|
+
if (!params.lang) {
|
|
4777
|
+
const file = (_a = value.split('/').pop()) !== null && _a !== void 0 ? _a : '';
|
|
4778
|
+
params.lang = file && file.includes('.', 1) ? (_c = (_b = file.split('.').pop()) === null || _b === void 0 ? void 0 : _b.match(language)) === null || _c === void 0 ? void 0 : _c[0].toLowerCase() : params.lang;
|
|
4779
|
+
}
|
|
4780
|
+
}
|
|
4781
|
+
name in params ? params.invalid = `Duplicate ${ name } value` : params[name] = value;
|
|
4782
|
+
return params;
|
|
4783
|
+
}, {})) !== null && _b !== void 0 ? _b : {};
|
|
4784
|
+
if (!closer || params.invalid)
|
|
4775
4785
|
return [(0, typed_dom_1.html)('pre', {
|
|
4776
4786
|
class: 'invalid',
|
|
4777
4787
|
translate: 'no',
|
|
4778
4788
|
'data-invalid-syntax': 'codeblock',
|
|
4779
4789
|
'data-invalid-type': !closer ? 'fence' : 'argument',
|
|
4780
|
-
'data-invalid-message': !closer ? `Missing the closing delimiter "${ delim }"` :
|
|
4790
|
+
'data-invalid-message': !closer ? `Missing the closing delimiter "${ delim }"` : params.invalid
|
|
4781
4791
|
}, `${ opener }${ body }${ closer }`)];
|
|
4782
|
-
const file = (_a = path.split('/').pop()) !== null && _a !== void 0 ? _a : '';
|
|
4783
|
-
const ext = file && file.includes('.', 1) ? file.split('.').pop() : '';
|
|
4784
|
-
lang = language.test(lang || ext) ? lang || ext : lang && 'invalid';
|
|
4785
4792
|
const el = (0, typed_dom_1.html)('pre', {
|
|
4786
|
-
class: lang ? `code language-${ lang }` : 'text',
|
|
4793
|
+
class: params.lang ? `code language-${ params.lang }` : 'text',
|
|
4787
4794
|
translate: 'no',
|
|
4788
|
-
'data-lang': lang || global_1.undefined,
|
|
4789
|
-
'data-
|
|
4790
|
-
|
|
4795
|
+
'data-lang': params.lang || global_1.undefined,
|
|
4796
|
+
'data-line': params.line || global_1.undefined,
|
|
4797
|
+
'data-path': params.path || global_1.undefined
|
|
4798
|
+
}, params.lang ? ((_f = (_d = (_c = context.caches) === null || _c === void 0 ? void 0 : _c.code) === null || _d === void 0 ? void 0 : _d.get(`${ (_e = params.lang) !== null && _e !== void 0 ? _e : '' }\n${ body.slice(0, -1) }`)) === null || _f === void 0 ? void 0 : _f.cloneNode(true).childNodes) || body.slice(0, -1) || global_1.undefined : (0, typed_dom_1.defrag)((0, parser_1.eval)((0, combinator_1.some)(autolink_1.autolink)(body.slice(0, -1), context), [])));
|
|
4791
4799
|
return [el];
|
|
4792
4800
|
})));
|
|
4793
4801
|
},
|
|
@@ -4795,8 +4803,6 @@ require = function () {
|
|
|
4795
4803
|
'../../combinator': 27,
|
|
4796
4804
|
'../../combinator/data/parser': 47,
|
|
4797
4805
|
'../autolink': 62,
|
|
4798
|
-
'../source': 128,
|
|
4799
|
-
'spica/array': 6,
|
|
4800
4806
|
'spica/global': 15,
|
|
4801
4807
|
'typed-dom': 26
|
|
4802
4808
|
}
|
|
@@ -6740,7 +6746,7 @@ require = function () {
|
|
|
6740
6746
|
], ([as, bs = []], rest) => [
|
|
6741
6747
|
(0, array_1.unshift)(as, bs),
|
|
6742
6748
|
rest
|
|
6743
|
-
]), ([, fence]) => fence)))));
|
|
6749
|
+
]), ([, fence]) => fence.length)))));
|
|
6744
6750
|
},
|
|
6745
6751
|
{
|
|
6746
6752
|
'../../combinator': 27,
|
|
@@ -8216,7 +8222,7 @@ require = function () {
|
|
|
8216
8222
|
class: void classList.add('invalid'),
|
|
8217
8223
|
'data-invalid-syntax': 'figure',
|
|
8218
8224
|
'data-invalid-type': 'position',
|
|
8219
|
-
'data-invalid-message': 'Base index declarations must be after level 1
|
|
8225
|
+
'data-invalid-message': 'Base index declarations must be after level 1 to 6 headings',
|
|
8220
8226
|
hidden: null
|
|
8221
8227
|
});
|
|
8222
8228
|
continue;
|
package/package-lock.json
CHANGED
package/package.json
CHANGED
|
@@ -47,7 +47,7 @@ describe('Unit: parser/block/codeblock', () => {
|
|
|
47
47
|
it('attribute', () => {
|
|
48
48
|
assert.deepStrictEqual(inspect(parser('```0\n```')), [['<pre class="code language-0" translate="no" data-lang="0"></pre>'], '']);
|
|
49
49
|
assert.deepStrictEqual(inspect(parser('```a\n```')), [['<pre class="code language-a" translate="no" data-lang="a"></pre>'], '']);
|
|
50
|
-
assert.deepStrictEqual(inspect(parser('```A\n```')), [['<pre class="
|
|
50
|
+
assert.deepStrictEqual(inspect(parser('```A\n```')), [['<pre class="code language-a" translate="no" data-lang="a"></pre>'], '']);
|
|
51
51
|
assert.deepStrictEqual(inspect(parser('```a-b\n```')), [['<pre class="code language-a-b" translate="no" data-lang="a-b"></pre>'], '']);
|
|
52
52
|
assert.deepStrictEqual(inspect(parser('```a-b0\n```')), [['<pre class="code language-a-b0" translate="no" data-lang="a-b0"></pre>'], '']);
|
|
53
53
|
assert.deepStrictEqual(inspect(parser('```a--b\n```')), [['<pre class="text" translate="no" data-path="a--b"></pre>'], '']);
|
|
@@ -62,7 +62,10 @@ describe('Unit: parser/block/codeblock', () => {
|
|
|
62
62
|
assert.deepStrictEqual(inspect(parser('```.b\n```')), [['<pre class="text" translate="no" data-path=".b"></pre>'], '']);
|
|
63
63
|
assert.deepStrictEqual(inspect(parser('```b.c\n```')), [['<pre class="code language-c" translate="no" data-lang="c" data-path="b.c"></pre>'], '']);
|
|
64
64
|
assert.deepStrictEqual(inspect(parser('```a b.c\n```')), [['<pre class="code language-a" translate="no" data-lang="a" data-path="b.c"></pre>'], '']);
|
|
65
|
-
assert.deepStrictEqual(inspect(parser('```
|
|
65
|
+
assert.deepStrictEqual(inspect(parser('```a 1\n```')), [['<pre class="code language-a" translate="no" data-lang="a" data-line="1"></pre>'], '']);
|
|
66
|
+
assert.deepStrictEqual(inspect(parser('``` 1\n```')), [['<pre class="text" translate="no" data-line="1"></pre>'], '']);
|
|
67
|
+
assert.deepStrictEqual(inspect(parser('``` 1,2-3\n```')), [['<pre class="text" translate="no" data-line="1,2-3"></pre>'], '']);
|
|
68
|
+
assert.deepStrictEqual(inspect(parser('``` 1 b.c\n```')), [['<pre class="code language-c" translate="no" data-lang="c" data-line="1" data-path="b.c"></pre>'], '']);
|
|
66
69
|
});
|
|
67
70
|
|
|
68
71
|
});
|
|
@@ -3,12 +3,10 @@ import { CodeBlockParser } from '../block';
|
|
|
3
3
|
import { eval } from '../../combinator/data/parser';
|
|
4
4
|
import { some, block, validate, fence, clear, fmap } from '../../combinator';
|
|
5
5
|
import { autolink } from '../autolink';
|
|
6
|
-
import { escsource } from '../source';
|
|
7
6
|
import { html, defrag } from 'typed-dom';
|
|
8
|
-
import { join } from 'spica/array';
|
|
9
7
|
|
|
10
|
-
const opener = /^(`{3,})(?!`)(
|
|
11
|
-
const language = /^[0-9a-z]+(?:-[a-z][0-9a-z]*)
|
|
8
|
+
const opener = /^(`{3,})(?!`)([^\n]*)(?:$|\n)/;
|
|
9
|
+
const language = /^[0-9a-z]+(?:-[a-z][0-9a-z]*)*$/i;
|
|
12
10
|
|
|
13
11
|
export const segment: CodeBlockParser.SegmentParser = block(validate('```',
|
|
14
12
|
clear(fence(opener, 300))));
|
|
@@ -19,35 +17,55 @@ export const segment_: CodeBlockParser.SegmentParser = block(validate('```',
|
|
|
19
17
|
export const codeblock: CodeBlockParser = block(validate('```', fmap(
|
|
20
18
|
fence(opener, 300),
|
|
21
19
|
// Bug: Type mismatch between outer and inner.
|
|
22
|
-
([body, closer, opener, delim,
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
20
|
+
([body, closer, opener, delim, param]: string[], _, context) => {
|
|
21
|
+
const params = param.match(/(?:\\.?|\S)+/g)?.reduce<{
|
|
22
|
+
lang?: string;
|
|
23
|
+
path?: string;
|
|
24
|
+
line?: string;
|
|
25
|
+
invalid?: string;
|
|
26
|
+
}>((params, value, i) => {
|
|
27
|
+
let name: string;
|
|
28
|
+
switch (true) {
|
|
29
|
+
case i === 0
|
|
30
|
+
&& value[0] === param[0]
|
|
31
|
+
&& language.test(value):
|
|
32
|
+
name = 'lang';
|
|
33
|
+
value = value.toLowerCase();
|
|
34
|
+
break;
|
|
35
|
+
case /^\d+(?:[,-]\d+)*$/.test(value):
|
|
36
|
+
name = 'line';
|
|
37
|
+
break;
|
|
38
|
+
default:
|
|
39
|
+
name = 'path';
|
|
40
|
+
if (!params.lang) {
|
|
41
|
+
const file = value.split('/').pop() ?? '';
|
|
42
|
+
params.lang = file && file.includes('.', 1)
|
|
43
|
+
? file.split('.').pop()?.match(language)?.[0].toLowerCase()
|
|
44
|
+
: params.lang;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
name in params
|
|
48
|
+
? params.invalid = `Duplicate ${name} value`
|
|
49
|
+
: params[name] = value;
|
|
50
|
+
return params;
|
|
51
|
+
}, {}) ?? {};
|
|
52
|
+
if (!closer || params.invalid) return [html('pre', {
|
|
29
53
|
class: 'invalid',
|
|
30
54
|
translate: 'no',
|
|
31
55
|
'data-invalid-syntax': 'codeblock',
|
|
32
56
|
'data-invalid-type': !closer ? 'fence' : 'argument',
|
|
33
|
-
'data-invalid-message': !closer ? `Missing the closing delimiter "${delim}"` :
|
|
57
|
+
'data-invalid-message': !closer ? `Missing the closing delimiter "${delim}"` : params.invalid,
|
|
34
58
|
}, `${opener}${body}${closer}`)];
|
|
35
|
-
const file = path.split('/').pop() ?? '';
|
|
36
|
-
const ext = file && file.includes('.', 1)
|
|
37
|
-
? file.split('.').pop()!
|
|
38
|
-
: '';
|
|
39
|
-
lang = language.test(lang || ext)
|
|
40
|
-
? lang || ext
|
|
41
|
-
: lang && 'invalid';
|
|
42
59
|
const el = html('pre',
|
|
43
60
|
{
|
|
44
|
-
class: lang ? `code language-${lang}` : 'text',
|
|
61
|
+
class: params.lang ? `code language-${params.lang}` : 'text',
|
|
45
62
|
translate: 'no',
|
|
46
|
-
'data-lang': lang || undefined,
|
|
47
|
-
'data-
|
|
63
|
+
'data-lang': params.lang || undefined,
|
|
64
|
+
'data-line': params.line || undefined,
|
|
65
|
+
'data-path': params.path || undefined,
|
|
48
66
|
},
|
|
49
|
-
lang
|
|
50
|
-
? context.caches?.code?.get(`${lang}\n${body.slice(0, -1)}`)?.cloneNode(true).childNodes ||
|
|
67
|
+
params.lang
|
|
68
|
+
? context.caches?.code?.get(`${params.lang ?? ''}\n${body.slice(0, -1)}`)?.cloneNode(true).childNodes ||
|
|
51
69
|
body.slice(0, -1) || undefined
|
|
52
70
|
: defrag(eval(some(autolink)(body.slice(0, -1), context), [])));
|
|
53
71
|
return [el];
|
|
@@ -181,7 +181,7 @@ describe('Unit: parser/processor/figure', () => {
|
|
|
181
181
|
'<h2 id="index:0">0</h2>',
|
|
182
182
|
'<figure data-label="$-0.1.0" data-group="$" class="invalid" data-invalid-syntax="figure" data-invalid-type="argument" data-invalid-message="Base index must be $-x.0 format"></figure>',
|
|
183
183
|
'<figure data-type="quote" data-label="fig-d" data-group="fig" data-number="4.1" id="label:fig-d"><div><blockquote></blockquote></div><figcaption><span class="figindex">Fig. 4.1. </span></figcaption></figure>',
|
|
184
|
-
'<figure data-label="$-0.0" data-group="$" class="invalid" data-invalid-syntax="figure" data-invalid-type="position" data-invalid-message="Base index declarations must be after level 1
|
|
184
|
+
'<figure data-label="$-0.0" data-group="$" class="invalid" data-invalid-syntax="figure" data-invalid-type="position" data-invalid-message="Base index declarations must be after level 1 to 6 headings"></figure>',
|
|
185
185
|
'<figure data-label="$-0.1.0" data-group="$" class="invalid" data-invalid-syntax="figure" data-invalid-type="argument" data-invalid-message="Base index must be $-x.0 format"></figure>',
|
|
186
186
|
'<figure data-label="$-0.4.0" data-group="$" class="invalid" data-invalid-syntax="figure" data-invalid-type="argument" data-invalid-message="Base index must be $-x.0 format"></figure>',
|
|
187
187
|
'<figure data-label="$-0.1.0" data-group="$" class="invalid" data-invalid-syntax="figure" data-invalid-type="argument" data-invalid-message="Base index must be $-x.0 format"></figure>',
|
|
@@ -232,17 +232,17 @@ describe('Unit: parser/processor/figure', () => {
|
|
|
232
232
|
assert.deepStrictEqual(
|
|
233
233
|
[...target.children].map(el => normalize(el.outerHTML)),
|
|
234
234
|
[
|
|
235
|
-
'<figure data-label="$-0.0" data-group="$" class="invalid" data-invalid-syntax="figure" data-invalid-type="position" data-invalid-message="Base index declarations must be after level 1
|
|
235
|
+
'<figure data-label="$-0.0" data-group="$" class="invalid" data-invalid-syntax="figure" data-invalid-type="position" data-invalid-message="Base index declarations must be after level 1 to 6 headings"></figure>',
|
|
236
236
|
'<h2 id="index:0">0</h2>',
|
|
237
237
|
'<figure data-label="$-0.0" data-group="$" hidden="" data-number="0.0"></figure>',
|
|
238
238
|
'<figure data-type="quote" data-label="fig-a" data-group="fig" data-number="0.1" id="label:fig-a"><div><blockquote></blockquote></div><figcaption><span class="figindex">Fig. 0.1. </span></figcaption></figure>',
|
|
239
|
-
'<figure data-label="$-0.0" data-group="$" class="invalid" data-invalid-syntax="figure" data-invalid-type="position" data-invalid-message="Base index declarations must be after level 1
|
|
239
|
+
'<figure data-label="$-0.0" data-group="$" class="invalid" data-invalid-syntax="figure" data-invalid-type="position" data-invalid-message="Base index declarations must be after level 1 to 6 headings"></figure>',
|
|
240
240
|
'<h2 id="index:0">0</h2>',
|
|
241
241
|
'<figure data-type="quote" data-label="fig-b" data-group="fig" data-number="1.1" id="label:fig-b"><div><blockquote></blockquote></div><figcaption><span class="figindex">Fig. 1.1. </span></figcaption></figure>',
|
|
242
|
-
'<figure data-label="$-0.0" data-group="$" class="invalid" data-invalid-syntax="figure" data-invalid-type="position" data-invalid-message="Base index declarations must be after level 1
|
|
242
|
+
'<figure data-label="$-0.0" data-group="$" class="invalid" data-invalid-syntax="figure" data-invalid-type="position" data-invalid-message="Base index declarations must be after level 1 to 6 headings"></figure>',
|
|
243
243
|
'<h3 id="index:0">0</h3>',
|
|
244
244
|
'<figure data-type="quote" data-label="fig-c" data-group="fig" data-number="1.2" id="label:fig-c"><div><blockquote></blockquote></div><figcaption><span class="figindex">Fig. 1.2. </span></figcaption></figure>',
|
|
245
|
-
'<figure data-label="$-1.0" data-group="$" class="invalid" data-invalid-syntax="figure" data-invalid-type="position" data-invalid-message="Base index declarations must be after level 1
|
|
245
|
+
'<figure data-label="$-1.0" data-group="$" class="invalid" data-invalid-syntax="figure" data-invalid-type="position" data-invalid-message="Base index declarations must be after level 1 to 6 headings"></figure>',
|
|
246
246
|
'<h2 id="index:0">0</h2>',
|
|
247
247
|
'<figure data-label="$-0.0" data-group="$" hidden="" data-number="2.0"></figure>',
|
|
248
248
|
'<figure data-type="quote" data-label="fig-d" data-group="fig" data-number="2.1" id="label:fig-d"><div><blockquote></blockquote></div><figcaption><span class="figindex">Fig. 2.1. </span></figcaption></figure>',
|
|
@@ -64,7 +64,7 @@ export function* figure(
|
|
|
64
64
|
class: void classList.add('invalid'),
|
|
65
65
|
'data-invalid-syntax': 'figure',
|
|
66
66
|
'data-invalid-type': 'position',
|
|
67
|
-
'data-invalid-message': 'Base index declarations must be after level 1
|
|
67
|
+
'data-invalid-message': 'Base index declarations must be after level 1 to 6 headings',
|
|
68
68
|
hidden: null,
|
|
69
69
|
});
|
|
70
70
|
continue;
|