securemark 0.294.1 → 0.294.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 +8 -0
- package/design.md +27 -39
- package/dist/index.js +49 -66
- package/package.json +1 -1
- package/src/combinator/control/manipulation/clear.ts +2 -2
- package/src/combinator/control/manipulation/lazy.ts +1 -3
- package/src/combinator/data/data.ts +38 -32
- package/src/combinator/data/parser/inits.ts +3 -3
- package/src/combinator/data/parser/sequence.test.ts +2 -2
- package/src/combinator/data/parser/sequence.ts +2 -2
- package/src/combinator/data/parser/some.test.ts +2 -2
- package/src/combinator/data/parser/subsequence.test.ts +2 -2
- package/src/combinator/data/parser/subsequence.ts +2 -2
- package/src/combinator/data/parser/tails.ts +2 -2
- package/src/combinator/data/parser/union.test.ts +2 -2
- package/src/combinator/data/parser/union.ts +2 -2
- package/src/combinator/data/parser.ts +33 -18
- package/src/parser/api/bind.ts +1 -1
- package/src/parser/api/parse.ts +9 -9
- package/src/parser/block.ts +1 -1
- package/src/parser/inline/autolink/url.test.ts +73 -72
- package/src/parser/inline/autolink/url.ts +4 -4
- package/src/parser/segment.ts +4 -10
- package/src/parser/util.ts +2 -1
|
@@ -1,97 +1,98 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { autolink } from '../autolink';
|
|
2
2
|
import { some } from '../../../combinator';
|
|
3
3
|
import { input } from '../../../combinator/data/parser';
|
|
4
4
|
import { inspect } from '../../../debug.test';
|
|
5
5
|
|
|
6
6
|
describe('Unit: parser/inline/autolink/url', () => {
|
|
7
7
|
describe('url', () => {
|
|
8
|
-
const parser = (source: string) => some(
|
|
8
|
+
const parser = (source: string) => some(autolink)((i => void ++i.context.position || i)(input(source, ctx)));
|
|
9
9
|
const { context: ctx } = input('', {});
|
|
10
10
|
|
|
11
11
|
it('invalid', () => {
|
|
12
12
|
assert.deepStrictEqual(inspect(parser(''), ctx), undefined);
|
|
13
|
-
assert.deepStrictEqual(inspect(parser(' http'), ctx), [['
|
|
14
|
-
assert.deepStrictEqual(inspect(parser(' ttp'), ctx), [['
|
|
15
|
-
assert.deepStrictEqual(inspect(parser(' http://'), ctx), [['
|
|
16
|
-
assert.deepStrictEqual(inspect(parser(' http://['), ctx), [['
|
|
17
|
-
assert.deepStrictEqual(inspect(parser(' http://]'), ctx), [['
|
|
18
|
-
assert.deepStrictEqual(inspect(parser(' Http://host'), ctx), [['
|
|
19
|
-
assert.deepStrictEqual(inspect(parser(' http://[::ffff:0:0%1]'), ctx), [['
|
|
20
|
-
assert.deepStrictEqual(inspect(parser(' http://[::ffff:0:0/96]'), ctx), [['
|
|
13
|
+
assert.deepStrictEqual(inspect(parser(' http'), ctx), [['http'], '']);
|
|
14
|
+
assert.deepStrictEqual(inspect(parser(' ttp'), ctx), [['ttp'], '']);
|
|
15
|
+
assert.deepStrictEqual(inspect(parser(' http://'), ctx), [['http:'], '//']);
|
|
16
|
+
assert.deepStrictEqual(inspect(parser(' http://['), ctx), [['http:'], '//[']);
|
|
17
|
+
assert.deepStrictEqual(inspect(parser(' http://]'), ctx), [['http:'], '//]']);
|
|
18
|
+
assert.deepStrictEqual(inspect(parser(' Http://host'), ctx), [['Http:'], '//host']);
|
|
19
|
+
assert.deepStrictEqual(inspect(parser(' http://[::ffff:0:0%1]'), ctx), [['<a class="invalid">http://[::ffff:0:0%1]</a>'], '']);
|
|
20
|
+
assert.deepStrictEqual(inspect(parser(' http://[::ffff:0:0/96]'), ctx), [['<a class="invalid">http://[::ffff:0:0/96]</a>'], '']);
|
|
21
21
|
});
|
|
22
22
|
|
|
23
23
|
it('basic', () => {
|
|
24
|
-
assert.deepStrictEqual(inspect(parser(' http://a'), ctx), [['
|
|
25
|
-
assert.deepStrictEqual(inspect(parser(' http://a/'), ctx), [['
|
|
26
|
-
assert.deepStrictEqual(inspect(parser(' http://a:80'), ctx), [['
|
|
27
|
-
assert.deepStrictEqual(inspect(parser(' http://a.b'), ctx), [['
|
|
28
|
-
assert.deepStrictEqual(inspect(parser(` http://a?#${encodeURIComponent(':/[]()<>?#=& ')}`), ctx), [['
|
|
29
|
-
assert.deepStrictEqual(inspect(parser(' http://a#()'), ctx), [['
|
|
30
|
-
assert.deepStrictEqual(inspect(parser(' http://a#( )'), ctx), [['
|
|
31
|
-
assert.deepStrictEqual(inspect(parser(' http://a#(\n)'), ctx), [['
|
|
32
|
-
assert.deepStrictEqual(inspect(parser(' http://[::]'), ctx), [['
|
|
33
|
-
assert.deepStrictEqual(inspect(parser('
|
|
34
|
-
assert.deepStrictEqual(inspect(parser('
|
|
24
|
+
assert.deepStrictEqual(inspect(parser(' http://a'), ctx), [['<a class="url" href="http://a" target="_blank">http://a</a>'], '']);
|
|
25
|
+
assert.deepStrictEqual(inspect(parser(' http://a/'), ctx), [['<a class="url" href="http://a/" target="_blank">http://a/</a>'], '']);
|
|
26
|
+
assert.deepStrictEqual(inspect(parser(' http://a:80'), ctx), [['<a class="url" href="http://a:80" target="_blank">http://a:80</a>'], '']);
|
|
27
|
+
assert.deepStrictEqual(inspect(parser(' http://a.b'), ctx), [['<a class="url" href="http://a.b" target="_blank">http://a.b</a>'], '']);
|
|
28
|
+
assert.deepStrictEqual(inspect(parser(` http://a?#${encodeURIComponent(':/[]()<>?#=& ')}`), ctx), [['<a class="url" href="http://a?#%3A%2F%5B%5D()%3C%3E%3F%23%3D%26%20" target="_blank">http://a?#%3A%2F[]()<>%3F%23%3D%26%20</a>'], '']);
|
|
29
|
+
assert.deepStrictEqual(inspect(parser(' http://a#()'), ctx), [['<a class="url" href="http://a#()" target="_blank">http://a#()</a>'], '']);
|
|
30
|
+
assert.deepStrictEqual(inspect(parser(' http://a#( )'), ctx), [['<a class="url" href="http://a#" target="_blank">http://a#</a>'], '( )']);
|
|
31
|
+
assert.deepStrictEqual(inspect(parser(' http://a#(\n)'), ctx), [['<a class="url" href="http://a#" target="_blank">http://a#</a>'], '(\n)']);
|
|
32
|
+
assert.deepStrictEqual(inspect(parser(' http://[::]'), ctx), [['<a class="url" href="http://[::]" target="_blank">http://[::]</a>'], '']);
|
|
33
|
+
assert.deepStrictEqual(inspect(parser('\rhttp://a#\\'), ctx), [['<a class="url" href="http://a#\\" target="_blank">http://a#\\</a>'], '']);
|
|
34
|
+
assert.deepStrictEqual(inspect(parser('\nhttp://a#\\'), ctx), [['<a class="url" href="http://a#\\" target="_blank">http://a#\\</a>'], '']);
|
|
35
35
|
});
|
|
36
36
|
|
|
37
37
|
it('trailing symbols', () => {
|
|
38
|
-
assert.deepStrictEqual(inspect(parser(' http://host '), ctx), [['
|
|
39
|
-
assert.deepStrictEqual(inspect(parser(' http://host
|
|
40
|
-
assert.deepStrictEqual(inspect(parser(' http://host
|
|
41
|
-
assert.deepStrictEqual(inspect(parser(' http://host
|
|
42
|
-
assert.deepStrictEqual(inspect(parser(' http://host\\'), ctx), [['
|
|
43
|
-
assert.deepStrictEqual(inspect(parser(' http://host
|
|
44
|
-
assert.deepStrictEqual(inspect(parser(' http://host
|
|
45
|
-
assert.deepStrictEqual(inspect(parser(' http://host
|
|
46
|
-
assert.deepStrictEqual(inspect(parser(' http://host
|
|
47
|
-
assert.deepStrictEqual(inspect(parser(' http://host
|
|
48
|
-
assert.deepStrictEqual(inspect(parser(' http://host
|
|
49
|
-
assert.deepStrictEqual(inspect(parser(' http://host
|
|
50
|
-
assert.deepStrictEqual(inspect(parser(' http://host
|
|
51
|
-
assert.deepStrictEqual(inspect(parser(' http://host
|
|
52
|
-
assert.deepStrictEqual(inspect(parser(' http://host
|
|
53
|
-
assert.deepStrictEqual(inspect(parser(' http://host
|
|
54
|
-
assert.deepStrictEqual(inspect(parser(' http://host
|
|
55
|
-
assert.deepStrictEqual(inspect(parser(' http://host
|
|
56
|
-
assert.deepStrictEqual(inspect(parser(' http://host
|
|
57
|
-
assert.deepStrictEqual(inspect(parser(' http://host
|
|
58
|
-
assert.deepStrictEqual(inspect(parser(' http://host
|
|
59
|
-
assert.deepStrictEqual(inspect(parser(' http://host
|
|
60
|
-
assert.deepStrictEqual(inspect(parser(' http://
|
|
61
|
-
assert.deepStrictEqual(inspect(parser(' http://
|
|
62
|
-
assert.deepStrictEqual(inspect(parser(' http://host
|
|
63
|
-
assert.deepStrictEqual(inspect(parser(
|
|
64
|
-
assert.deepStrictEqual(inspect(parser(' http://host
|
|
65
|
-
assert.deepStrictEqual(inspect(parser(
|
|
66
|
-
assert.deepStrictEqual(inspect(parser(' http://host
|
|
67
|
-
assert.deepStrictEqual(inspect(parser(' http://host
|
|
68
|
-
assert.deepStrictEqual(inspect(parser(' http://host
|
|
69
|
-
assert.deepStrictEqual(inspect(parser(' http://host
|
|
70
|
-
assert.deepStrictEqual(inspect(parser(' http://host
|
|
71
|
-
assert.deepStrictEqual(inspect(parser(' http://host#
|
|
72
|
-
assert.deepStrictEqual(inspect(parser(' http://
|
|
73
|
-
assert.deepStrictEqual(inspect(parser(' http://host
|
|
74
|
-
assert.deepStrictEqual(inspect(parser(' http://host
|
|
75
|
-
assert.deepStrictEqual(inspect(parser(' http://host
|
|
76
|
-
assert.deepStrictEqual(inspect(parser(' http://host
|
|
77
|
-
assert.deepStrictEqual(inspect(parser(' http://host
|
|
78
|
-
assert.deepStrictEqual(inspect(parser(' http://host
|
|
79
|
-
assert.deepStrictEqual(inspect(parser(' http://host
|
|
80
|
-
assert.deepStrictEqual(inspect(parser(' http://host
|
|
81
|
-
assert.deepStrictEqual(inspect(parser(' http://host
|
|
82
|
-
assert.deepStrictEqual(inspect(parser(' http://host
|
|
83
|
-
assert.deepStrictEqual(inspect(parser(' http://host
|
|
84
|
-
assert.deepStrictEqual(inspect(parser(' http://host
|
|
38
|
+
assert.deepStrictEqual(inspect(parser(' http://host '), ctx), [['<a class="url" href="http://host" target="_blank">http://host</a>'], ' ']);
|
|
39
|
+
assert.deepStrictEqual(inspect(parser(' http://host\n'), ctx), [['<a class="url" href="http://host" target="_blank">http://host</a>'], '\n']);
|
|
40
|
+
assert.deepStrictEqual(inspect(parser(' http://host\\'), ctx), [['<a class="url" href="http://host" target="_blank">http://host</a>'], '\\']);
|
|
41
|
+
assert.deepStrictEqual(inspect(parser(' http://host\\a'), ctx), [['<a class="url" href="http://host" target="_blank">http://host</a>'], '\\a']);
|
|
42
|
+
assert.deepStrictEqual(inspect(parser(' http://host\\ '), ctx), [['<a class="url" href="http://host" target="_blank">http://host</a>'], '\\ ']);
|
|
43
|
+
assert.deepStrictEqual(inspect(parser(' http://host\\\n'), ctx), [['<a class="url" href="http://host" target="_blank">http://host</a>'], '\\\n']);
|
|
44
|
+
assert.deepStrictEqual(inspect(parser(' http://host. '), ctx), [['<a class="url" href="http://host" target="_blank">http://host</a>'], '. ']);
|
|
45
|
+
assert.deepStrictEqual(inspect(parser(' http://host.\n'), ctx), [['<a class="url" href="http://host" target="_blank">http://host</a>'], '.\n']);
|
|
46
|
+
assert.deepStrictEqual(inspect(parser(' http://host.\\'), ctx), [['<a class="url" href="http://host" target="_blank">http://host</a>'], '.\\']);
|
|
47
|
+
assert.deepStrictEqual(inspect(parser(' http://host.\\ '), ctx), [['<a class="url" href="http://host" target="_blank">http://host</a>'], '.\\ ']);
|
|
48
|
+
assert.deepStrictEqual(inspect(parser(' http://host.\\\n'), ctx), [['<a class="url" href="http://host" target="_blank">http://host</a>'], '.\\\n']);
|
|
49
|
+
assert.deepStrictEqual(inspect(parser(' http://host,'), ctx), [['<a class="url" href="http://host" target="_blank">http://host</a>'], ',']);
|
|
50
|
+
assert.deepStrictEqual(inspect(parser(' http://host;'), ctx), [['<a class="url" href="http://host" target="_blank">http://host</a>'], ';']);
|
|
51
|
+
assert.deepStrictEqual(inspect(parser(' http://host.'), ctx), [['<a class="url" href="http://host" target="_blank">http://host</a>'], '.']);
|
|
52
|
+
assert.deepStrictEqual(inspect(parser(' http://host:'), ctx), [['<a class="url" href="http://host" target="_blank">http://host</a>'], ':']);
|
|
53
|
+
assert.deepStrictEqual(inspect(parser(' http://host!'), ctx), [['<a class="url" href="http://host" target="_blank">http://host</a>'], '!']);
|
|
54
|
+
assert.deepStrictEqual(inspect(parser(' http://host?'), ctx), [['<a class="url" href="http://host" target="_blank">http://host</a>'], '?']);
|
|
55
|
+
assert.deepStrictEqual(inspect(parser(' http://host+'), ctx), [['<a class="url" href="http://host" target="_blank">http://host</a>'], '+']);
|
|
56
|
+
assert.deepStrictEqual(inspect(parser(' http://host-'), ctx), [['<a class="url" href="http://host" target="_blank">http://host</a>'], '-']);
|
|
57
|
+
assert.deepStrictEqual(inspect(parser(' http://host*'), ctx), [['<a class="url" href="http://host" target="_blank">http://host</a>'], '*']);
|
|
58
|
+
assert.deepStrictEqual(inspect(parser(' http://host='), ctx), [['<a class="url" href="http://host" target="_blank">http://host</a>'], '=']);
|
|
59
|
+
assert.deepStrictEqual(inspect(parser(' http://host~'), ctx), [['<a class="url" href="http://host" target="_blank">http://host</a>'], '~']);
|
|
60
|
+
assert.deepStrictEqual(inspect(parser(' http://host^'), ctx), [['<a class="url" href="http://host" target="_blank">http://host</a>'], '^']);
|
|
61
|
+
assert.deepStrictEqual(inspect(parser(' http://host_'), ctx), [['<a class="url" href="http://host" target="_blank">http://host</a>'], '_']);
|
|
62
|
+
assert.deepStrictEqual(inspect(parser(' http://host/'), ctx), [['<a class="url" href="http://host/" target="_blank">http://host/</a>'], '']);
|
|
63
|
+
assert.deepStrictEqual(inspect(parser(' http://host//'), ctx), [['<a class="url" href="http://host//" target="_blank">http://host//</a>'], '']);
|
|
64
|
+
assert.deepStrictEqual(inspect(parser(' http://host///'), ctx), [['<a class="url" href="http://host" target="_blank">http://host</a>'], '///']);
|
|
65
|
+
assert.deepStrictEqual(inspect(parser(` http://host'`), ctx), [[`<a class="url" href="http://host'" target="_blank">http://host'</a>`], '']);
|
|
66
|
+
assert.deepStrictEqual(inspect(parser(' http://host"'), ctx), [['<a class="url" href="http://host" target="_blank">http://host</a>'], '"']);
|
|
67
|
+
assert.deepStrictEqual(inspect(parser(' http://host`'), ctx), [['<a class="url" href="http://host" target="_blank">http://host</a>'], '`']);
|
|
68
|
+
assert.deepStrictEqual(inspect(parser(' http://host|'), ctx), [['<a class="url" href="http://host" target="_blank">http://host</a>'], '|']);
|
|
69
|
+
assert.deepStrictEqual(inspect(parser(' http://host&'), ctx), [['<a class="url" href="http://host&" target="_blank">http://host&</a>'], '']);
|
|
70
|
+
assert.deepStrictEqual(inspect(parser(' http://host$'), ctx), [['<a class="url" href="http://host" target="_blank">http://host</a>'], '$']);
|
|
71
|
+
assert.deepStrictEqual(inspect(parser(' http://host#"$"'), ctx), [['<a class="url" href="http://host#" target="_blank">http://host#</a>'], '"$"']);
|
|
72
|
+
assert.deepStrictEqual(inspect(parser(' http://host#($)'), ctx), [['<a class="url" href="http://host#" target="_blank">http://host#</a>'], '($)']);
|
|
73
|
+
assert.deepStrictEqual(inspect(parser(' http://host#(($))'), ctx), [['<a class="url" href="http://host#" target="_blank">http://host#</a>'], '(($))']);
|
|
74
|
+
assert.deepStrictEqual(inspect(parser(' http://user@host'), ctx), [['<a class="url" href="http://user@host" target="_blank">http://user@host</a>'], '']);
|
|
75
|
+
assert.deepStrictEqual(inspect(parser(' http://host#@'), ctx), [['<a class="url" href="http://host#@" target="_blank">http://host#@</a>'], '']);
|
|
76
|
+
assert.deepStrictEqual(inspect(parser(' http://host['), ctx), [['<a class="url" href="http://host" target="_blank">http://host</a>'], '[']);
|
|
77
|
+
assert.deepStrictEqual(inspect(parser(' http://host]'), ctx), [['<a class="url" href="http://host" target="_blank">http://host</a>'], ']']);
|
|
78
|
+
assert.deepStrictEqual(inspect(parser(' http://host('), ctx), [['<a class="url" href="http://host" target="_blank">http://host</a>'], '(']);
|
|
79
|
+
assert.deepStrictEqual(inspect(parser(' http://host)'), ctx), [['<a class="url" href="http://host" target="_blank">http://host</a>'], ')']);
|
|
80
|
+
assert.deepStrictEqual(inspect(parser(' http://host{'), ctx), [['<a class="url" href="http://host" target="_blank">http://host</a>'], '{']);
|
|
81
|
+
assert.deepStrictEqual(inspect(parser(' http://host}'), ctx), [['<a class="url" href="http://host" target="_blank">http://host</a>'], '}']);
|
|
82
|
+
assert.deepStrictEqual(inspect(parser(' http://host<'), ctx), [['<a class="url" href="http://host" target="_blank">http://host</a>'], '<']);
|
|
83
|
+
assert.deepStrictEqual(inspect(parser(' http://host>'), ctx), [['<a class="url" href="http://host" target="_blank">http://host</a>'], '>']);
|
|
84
|
+
assert.deepStrictEqual(inspect(parser(' http://host('), ctx), [['<a class="url" href="http://host" target="_blank">http://host</a>'], '(']);
|
|
85
|
+
assert.deepStrictEqual(inspect(parser(' http://host)'), ctx), [['<a class="url" href="http://host" target="_blank">http://host</a>'], ')']);
|
|
85
86
|
});
|
|
86
87
|
|
|
87
88
|
it('trailing entities', () => {
|
|
88
|
-
assert.deepStrictEqual(inspect(parser(' http://host?&hl;'), ctx), [['
|
|
89
|
-
assert.deepStrictEqual(inspect(parser(' http://host?&hl;&hl;'), ctx), [['
|
|
89
|
+
assert.deepStrictEqual(inspect(parser(' http://host?&hl;'), ctx), [['<a class="url" href="http://host?&hl" target="_blank">http://host?&hl</a>'], ';']);
|
|
90
|
+
assert.deepStrictEqual(inspect(parser(' http://host?&hl;&hl;'), ctx), [['<a class="url" href="http://host?&hl;&hl" target="_blank">http://host?&hl;&hl</a>'], ';']);
|
|
90
91
|
});
|
|
91
92
|
|
|
92
93
|
it('protocol', () => {
|
|
93
|
-
assert.deepStrictEqual(inspect(parser(' http://host'), ctx), [['
|
|
94
|
-
assert.deepStrictEqual(inspect(parser(' https://host'), ctx), [['
|
|
94
|
+
assert.deepStrictEqual(inspect(parser(' http://host'), ctx), [['<a class="url" href="http://host" target="_blank">http://host</a>'], '']);
|
|
95
|
+
assert.deepStrictEqual(inspect(parser(' https://host'), ctx), [['<a class="url" href="https://host" target="_blank">https://host</a>'], '']);
|
|
95
96
|
});
|
|
96
97
|
|
|
97
98
|
});
|
|
@@ -7,10 +7,10 @@ import { unescsource, str } from '../../source';
|
|
|
7
7
|
|
|
8
8
|
export const url: AutolinkParser.UrlParser = lazy(() => rewrite(
|
|
9
9
|
open(
|
|
10
|
-
/(?<![0-
|
|
11
|
-
precedence(
|
|
12
|
-
|
|
13
|
-
|
|
10
|
+
/(?<![0-9A-Za-z][.+-]?)https?:\/\/(?=[\x21-\x7E])/y,
|
|
11
|
+
precedence(0, some(union([
|
|
12
|
+
some(unescsource, /(?<![-+*=~^_,.;:!?]|\/{3})(?:[-+*=~^_,.;:!?]|\/{3,}(?!\/))*(?=[\\$"`\[\](){}<>()[]{}|]|[^\x21-\x7E]|$)/y),
|
|
13
|
+
precedence(1, verify(bracket, ns => ns.length > 0)),
|
|
14
14
|
]), undefined, [[/[^\x21-\x7E]|\$/y, 9]])),
|
|
15
15
|
false,
|
|
16
16
|
[3 | Backtrack.autolink]),
|
package/src/parser/segment.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { MarkdownParser } from '../../markdown';
|
|
2
2
|
import { Command } from './context';
|
|
3
|
-
import { clean } from '../combinator/data/parser';
|
|
4
3
|
import { union, some } from '../combinator';
|
|
5
4
|
import { segment as heading } from './block/heading';
|
|
6
5
|
import { segment as codeblock } from './block/codeblock';
|
|
@@ -43,14 +42,9 @@ const parser: SegmentParser = union([
|
|
|
43
42
|
export function* segment(source: string): Generator<string, undefined, undefined> {
|
|
44
43
|
if (!validate(source, MAX_INPUT_SIZE)) return yield `${Command.Error}Too large input over ${MAX_INPUT_SIZE.toLocaleString('en')} bytes.\n${source.slice(0, 1001)}`;
|
|
45
44
|
assert(source.length < Number.MAX_SAFE_INTEGER);
|
|
46
|
-
|
|
47
|
-
source,
|
|
48
|
-
|
|
49
|
-
};
|
|
50
|
-
const input = { context };
|
|
51
|
-
for (; context.position < source.length;) {
|
|
52
|
-
const { position } = context;
|
|
53
|
-
const result = parser(input)!;
|
|
45
|
+
for (let position = 0; position < source.length;) {
|
|
46
|
+
const context = { source, position };
|
|
47
|
+
const result = parser({ context })!;
|
|
54
48
|
assert(result);
|
|
55
49
|
assert(context.position > position);
|
|
56
50
|
const segs = result.length > 0
|
|
@@ -63,7 +57,7 @@ export function* segment(source: string): Generator<string, undefined, undefined
|
|
|
63
57
|
? yield seg
|
|
64
58
|
: yield `${Command.Error}Too large segment over ${MAX_SEGMENT_SIZE.toLocaleString('en')} bytes.\n${seg}`
|
|
65
59
|
}
|
|
66
|
-
|
|
60
|
+
position = context.position;
|
|
67
61
|
}
|
|
68
62
|
}
|
|
69
63
|
|
package/src/parser/util.ts
CHANGED
|
@@ -5,7 +5,8 @@ import { Parser, Result, List, Data, Ctx, Node, Context, failsafe } from '../com
|
|
|
5
5
|
import { define } from 'typed-dom/dom';
|
|
6
6
|
|
|
7
7
|
export function* unwrap<N>(nodes: List<Data<N>> | undefined): Iterable<N> {
|
|
8
|
-
|
|
8
|
+
if (nodes === undefined) return;
|
|
9
|
+
for (const node of nodes) {
|
|
9
10
|
yield node.value;
|
|
10
11
|
}
|
|
11
12
|
}
|