@lezer/common 1.4.0 → 1.5.1
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/dist/index.cjs +34 -19
- package/dist/index.d.cts +28 -2
- package/dist/index.d.ts +28 -2
- package/dist/index.js +34 -19
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -126,10 +126,17 @@ class MountedTree {
|
|
|
126
126
|
/**
|
|
127
127
|
The parser used to create this subtree.
|
|
128
128
|
*/
|
|
129
|
-
parser
|
|
129
|
+
parser,
|
|
130
|
+
/**
|
|
131
|
+
[Indicates](#common.IterMode.EnterBracketed) that the nested
|
|
132
|
+
content is delineated with some kind
|
|
133
|
+
of bracket token.
|
|
134
|
+
*/
|
|
135
|
+
bracketed = false) {
|
|
130
136
|
this.tree = tree;
|
|
131
137
|
this.overlay = overlay;
|
|
132
138
|
this.parser = parser;
|
|
139
|
+
this.bracketed = bracketed;
|
|
133
140
|
}
|
|
134
141
|
/**
|
|
135
142
|
@internal
|
|
@@ -334,6 +341,13 @@ exports.IterMode = void 0;
|
|
|
334
341
|
position.
|
|
335
342
|
*/
|
|
336
343
|
IterMode[IterMode["IgnoreOverlays"] = 8] = "IgnoreOverlays";
|
|
344
|
+
/**
|
|
345
|
+
When set, positions on the boundary of a mounted overlay tree
|
|
346
|
+
that has its [`bracketed`](#common.NestedParse.bracketed) flag
|
|
347
|
+
set will enter that tree regardless of side. Only supported in
|
|
348
|
+
[`enter`](#common.SyntaxNode.enter), not in cursors.
|
|
349
|
+
*/
|
|
350
|
+
IterMode[IterMode["EnterBracketed"] = 16] = "EnterBracketed";
|
|
337
351
|
})(exports.IterMode || (exports.IterMode = {}));
|
|
338
352
|
/**
|
|
339
353
|
A piece of syntax tree. There are two ways to approach these
|
|
@@ -733,8 +747,11 @@ class TreeNode extends BaseNode {
|
|
|
733
747
|
nextChild(i, dir, pos, side, mode = 0) {
|
|
734
748
|
for (let parent = this;;) {
|
|
735
749
|
for (let { children, positions } = parent._tree, e = dir > 0 ? children.length : -1; i != e; i += dir) {
|
|
736
|
-
let next = children[i], start = positions[i] + parent.from;
|
|
737
|
-
if (!
|
|
750
|
+
let next = children[i], start = positions[i] + parent.from, mounted;
|
|
751
|
+
if (!((mode & exports.IterMode.EnterBracketed) && next instanceof Tree &&
|
|
752
|
+
(mounted = MountedTree.get(next)) && !mounted.overlay && mounted.bracketed &&
|
|
753
|
+
pos >= start && pos <= start + next.length) &&
|
|
754
|
+
!checkSide(side, pos, start, start + next.length))
|
|
738
755
|
continue;
|
|
739
756
|
if (next instanceof TreeBuffer) {
|
|
740
757
|
if (mode & exports.IterMode.ExcludeBuffers)
|
|
@@ -749,7 +766,7 @@ class TreeNode extends BaseNode {
|
|
|
749
766
|
return new TreeNode(mounted.tree, start, i, parent);
|
|
750
767
|
let inner = new TreeNode(next, start, i, parent);
|
|
751
768
|
return (mode & exports.IterMode.IncludeAnonymous) || !inner.type.isAnonymous ? inner
|
|
752
|
-
: inner.nextChild(dir < 0 ? next.children.length - 1 : 0, dir, pos, side);
|
|
769
|
+
: inner.nextChild(dir < 0 ? next.children.length - 1 : 0, dir, pos, side, mode);
|
|
753
770
|
}
|
|
754
771
|
}
|
|
755
772
|
if ((mode & exports.IterMode.IncludeAnonymous) || !parent.type.isAnonymous)
|
|
@@ -771,10 +788,10 @@ class TreeNode extends BaseNode {
|
|
|
771
788
|
enter(pos, side, mode = 0) {
|
|
772
789
|
let mounted;
|
|
773
790
|
if (!(mode & exports.IterMode.IgnoreOverlays) && (mounted = MountedTree.get(this._tree)) && mounted.overlay) {
|
|
774
|
-
let rPos = pos - this.from;
|
|
791
|
+
let rPos = pos - this.from, enterBracketed = (mode & exports.IterMode.EnterBracketed) && mounted.bracketed;
|
|
775
792
|
for (let { from, to } of mounted.overlay) {
|
|
776
|
-
if ((side > 0 ? from <= rPos : from < rPos) &&
|
|
777
|
-
(side < 0 ? to >= rPos : to > rPos))
|
|
793
|
+
if ((side > 0 || enterBracketed ? from <= rPos : from < rPos) &&
|
|
794
|
+
(side < 0 || enterBracketed ? to >= rPos : to > rPos))
|
|
778
795
|
return new TreeNode(mounted.tree, mounted.overlay[0].from + this.from, -1, this);
|
|
779
796
|
}
|
|
780
797
|
}
|
|
@@ -963,12 +980,7 @@ class TreeCursor {
|
|
|
963
980
|
/**
|
|
964
981
|
@internal
|
|
965
982
|
*/
|
|
966
|
-
constructor(node,
|
|
967
|
-
/**
|
|
968
|
-
@internal
|
|
969
|
-
*/
|
|
970
|
-
mode = 0) {
|
|
971
|
-
this.mode = mode;
|
|
983
|
+
constructor(node, mode = 0) {
|
|
972
984
|
/**
|
|
973
985
|
@internal
|
|
974
986
|
*/
|
|
@@ -979,6 +991,7 @@ class TreeCursor {
|
|
|
979
991
|
*/
|
|
980
992
|
this.index = 0;
|
|
981
993
|
this.bufferNode = null;
|
|
994
|
+
this.mode = mode & ~exports.IterMode.EnterBracketed;
|
|
982
995
|
if (node instanceof TreeNode) {
|
|
983
996
|
this.yieldNode(node);
|
|
984
997
|
}
|
|
@@ -1770,10 +1783,11 @@ function parseMixed(nest) {
|
|
|
1770
1783
|
return (parse, input, fragments, ranges) => new MixedParse(parse, nest, input, fragments, ranges);
|
|
1771
1784
|
}
|
|
1772
1785
|
class InnerParse {
|
|
1773
|
-
constructor(parser, parse, overlay, target, from) {
|
|
1786
|
+
constructor(parser, parse, overlay, bracketed, target, from) {
|
|
1774
1787
|
this.parser = parser;
|
|
1775
1788
|
this.parse = parse;
|
|
1776
1789
|
this.overlay = overlay;
|
|
1790
|
+
this.bracketed = bracketed;
|
|
1777
1791
|
this.target = target;
|
|
1778
1792
|
this.from = from;
|
|
1779
1793
|
}
|
|
@@ -1783,12 +1797,13 @@ function checkRanges(ranges) {
|
|
|
1783
1797
|
throw new RangeError("Invalid inner parse ranges given: " + JSON.stringify(ranges));
|
|
1784
1798
|
}
|
|
1785
1799
|
class ActiveOverlay {
|
|
1786
|
-
constructor(parser, predicate, mounts, index, start, target, prev) {
|
|
1800
|
+
constructor(parser, predicate, mounts, index, start, bracketed, target, prev) {
|
|
1787
1801
|
this.parser = parser;
|
|
1788
1802
|
this.predicate = predicate;
|
|
1789
1803
|
this.mounts = mounts;
|
|
1790
1804
|
this.index = index;
|
|
1791
1805
|
this.start = start;
|
|
1806
|
+
this.bracketed = bracketed;
|
|
1792
1807
|
this.target = target;
|
|
1793
1808
|
this.prev = prev;
|
|
1794
1809
|
this.depth = 0;
|
|
@@ -1834,7 +1849,7 @@ class MixedParse {
|
|
|
1834
1849
|
// presumably not aliased anywhere else) to hold the information
|
|
1835
1850
|
// about the inner parse.
|
|
1836
1851
|
let props = Object.assign(Object.create(null), inner.target.props);
|
|
1837
|
-
props[NodeProp.mounted.id] = new MountedTree(done, inner.overlay, inner.parser);
|
|
1852
|
+
props[NodeProp.mounted.id] = new MountedTree(done, inner.overlay, inner.parser, inner.bracketed);
|
|
1838
1853
|
inner.target.props = props;
|
|
1839
1854
|
}
|
|
1840
1855
|
return null;
|
|
@@ -1895,7 +1910,7 @@ class MixedParse {
|
|
|
1895
1910
|
}
|
|
1896
1911
|
let oldMounts = fragmentCursor.findMounts(cursor.from, nest.parser);
|
|
1897
1912
|
if (typeof nest.overlay == "function") {
|
|
1898
|
-
overlay = new ActiveOverlay(nest.parser, nest.overlay, oldMounts, this.inner.length, cursor.from, cursor.tree, overlay);
|
|
1913
|
+
overlay = new ActiveOverlay(nest.parser, nest.overlay, oldMounts, this.inner.length, cursor.from, !!nest.bracketed, cursor.tree, overlay);
|
|
1899
1914
|
}
|
|
1900
1915
|
else {
|
|
1901
1916
|
let ranges = punchRanges(this.ranges, nest.overlay ||
|
|
@@ -1904,7 +1919,7 @@ class MixedParse {
|
|
|
1904
1919
|
checkRanges(ranges);
|
|
1905
1920
|
if (ranges.length || !nest.overlay)
|
|
1906
1921
|
this.inner.push(new InnerParse(nest.parser, ranges.length ? nest.parser.startParse(this.input, enterFragments(oldMounts, ranges), ranges)
|
|
1907
|
-
: nest.parser.startParse(""), nest.overlay ? nest.overlay.map(r => new Range(r.from - cursor.from, r.to - cursor.from)) : null, cursor.tree, ranges.length ? ranges[0].from : cursor.from));
|
|
1922
|
+
: nest.parser.startParse(""), nest.overlay ? nest.overlay.map(r => new Range(r.from - cursor.from, r.to - cursor.from)) : null, !!nest.bracketed, cursor.tree, ranges.length ? ranges[0].from : cursor.from));
|
|
1908
1923
|
if (!nest.overlay)
|
|
1909
1924
|
enter = false;
|
|
1910
1925
|
else if (ranges.length)
|
|
@@ -1938,7 +1953,7 @@ class MixedParse {
|
|
|
1938
1953
|
let ranges = punchRanges(this.ranges, overlay.ranges);
|
|
1939
1954
|
if (ranges.length) {
|
|
1940
1955
|
checkRanges(ranges);
|
|
1941
|
-
this.inner.splice(overlay.index, 0, new InnerParse(overlay.parser, overlay.parser.startParse(this.input, enterFragments(overlay.mounts, ranges), ranges), overlay.ranges.map(r => new Range(r.from - overlay.start, r.to - overlay.start)), overlay.target, ranges[0].from));
|
|
1956
|
+
this.inner.splice(overlay.index, 0, new InnerParse(overlay.parser, overlay.parser.startParse(this.input, enterFragments(overlay.mounts, ranges), ranges), overlay.ranges.map(r => new Range(r.from - overlay.start, r.to - overlay.start)), overlay.bracketed, overlay.target, ranges[0].from));
|
|
1942
1957
|
}
|
|
1943
1958
|
overlay = overlay.prev;
|
|
1944
1959
|
}
|
package/dist/index.d.cts
CHANGED
|
@@ -349,6 +349,12 @@ declare class MountedTree {
|
|
|
349
349
|
The parser used to create this subtree.
|
|
350
350
|
*/
|
|
351
351
|
readonly parser: Parser;
|
|
352
|
+
/**
|
|
353
|
+
[Indicates](#common.IterMode.EnterBracketed) that the nested
|
|
354
|
+
content is delineated with some kind
|
|
355
|
+
of bracket token.
|
|
356
|
+
*/
|
|
357
|
+
readonly bracketed: boolean;
|
|
352
358
|
constructor(
|
|
353
359
|
/**
|
|
354
360
|
The inner tree.
|
|
@@ -370,7 +376,13 @@ declare class MountedTree {
|
|
|
370
376
|
/**
|
|
371
377
|
The parser used to create this subtree.
|
|
372
378
|
*/
|
|
373
|
-
parser: Parser
|
|
379
|
+
parser: Parser,
|
|
380
|
+
/**
|
|
381
|
+
[Indicates](#common.IterMode.EnterBracketed) that the nested
|
|
382
|
+
content is delineated with some kind
|
|
383
|
+
of bracket token.
|
|
384
|
+
*/
|
|
385
|
+
bracketed?: boolean);
|
|
374
386
|
}
|
|
375
387
|
/**
|
|
376
388
|
Type returned by [`NodeProp.add`](#common.NodeProp.add). Describes
|
|
@@ -531,7 +543,14 @@ declare enum IterMode {
|
|
|
531
543
|
library to not enter mounted overlays if one covers the given
|
|
532
544
|
position.
|
|
533
545
|
*/
|
|
534
|
-
IgnoreOverlays = 8
|
|
546
|
+
IgnoreOverlays = 8,
|
|
547
|
+
/**
|
|
548
|
+
When set, positions on the boundary of a mounted overlay tree
|
|
549
|
+
that has its [`bracketed`](#common.NestedParse.bracketed) flag
|
|
550
|
+
set will enter that tree regardless of side. Only supported in
|
|
551
|
+
[`enter`](#common.SyntaxNode.enter), not in cursors.
|
|
552
|
+
*/
|
|
553
|
+
EnterBracketed = 16
|
|
535
554
|
}
|
|
536
555
|
/**
|
|
537
556
|
A piece of syntax tree. There are two ways to approach these
|
|
@@ -1135,6 +1154,13 @@ interface NestedParse {
|
|
|
1135
1154
|
from: number;
|
|
1136
1155
|
to: number;
|
|
1137
1156
|
} | boolean);
|
|
1157
|
+
/**
|
|
1158
|
+
When `true`, indicates that this nested language is surrounded
|
|
1159
|
+
by some kind of bracket token, which can be used to make
|
|
1160
|
+
iteration [eagerly](#common.IterMode.EnterBracketed) enter such
|
|
1161
|
+
trees.
|
|
1162
|
+
*/
|
|
1163
|
+
bracketed?: boolean;
|
|
1138
1164
|
}
|
|
1139
1165
|
/**
|
|
1140
1166
|
Create a parse wrapper that, after the inner parse completes,
|
package/dist/index.d.ts
CHANGED
|
@@ -349,6 +349,12 @@ declare class MountedTree {
|
|
|
349
349
|
The parser used to create this subtree.
|
|
350
350
|
*/
|
|
351
351
|
readonly parser: Parser;
|
|
352
|
+
/**
|
|
353
|
+
[Indicates](#common.IterMode.EnterBracketed) that the nested
|
|
354
|
+
content is delineated with some kind
|
|
355
|
+
of bracket token.
|
|
356
|
+
*/
|
|
357
|
+
readonly bracketed: boolean;
|
|
352
358
|
constructor(
|
|
353
359
|
/**
|
|
354
360
|
The inner tree.
|
|
@@ -370,7 +376,13 @@ declare class MountedTree {
|
|
|
370
376
|
/**
|
|
371
377
|
The parser used to create this subtree.
|
|
372
378
|
*/
|
|
373
|
-
parser: Parser
|
|
379
|
+
parser: Parser,
|
|
380
|
+
/**
|
|
381
|
+
[Indicates](#common.IterMode.EnterBracketed) that the nested
|
|
382
|
+
content is delineated with some kind
|
|
383
|
+
of bracket token.
|
|
384
|
+
*/
|
|
385
|
+
bracketed?: boolean);
|
|
374
386
|
}
|
|
375
387
|
/**
|
|
376
388
|
Type returned by [`NodeProp.add`](#common.NodeProp.add). Describes
|
|
@@ -531,7 +543,14 @@ declare enum IterMode {
|
|
|
531
543
|
library to not enter mounted overlays if one covers the given
|
|
532
544
|
position.
|
|
533
545
|
*/
|
|
534
|
-
IgnoreOverlays = 8
|
|
546
|
+
IgnoreOverlays = 8,
|
|
547
|
+
/**
|
|
548
|
+
When set, positions on the boundary of a mounted overlay tree
|
|
549
|
+
that has its [`bracketed`](#common.NestedParse.bracketed) flag
|
|
550
|
+
set will enter that tree regardless of side. Only supported in
|
|
551
|
+
[`enter`](#common.SyntaxNode.enter), not in cursors.
|
|
552
|
+
*/
|
|
553
|
+
EnterBracketed = 16
|
|
535
554
|
}
|
|
536
555
|
/**
|
|
537
556
|
A piece of syntax tree. There are two ways to approach these
|
|
@@ -1135,6 +1154,13 @@ interface NestedParse {
|
|
|
1135
1154
|
from: number;
|
|
1136
1155
|
to: number;
|
|
1137
1156
|
} | boolean);
|
|
1157
|
+
/**
|
|
1158
|
+
When `true`, indicates that this nested language is surrounded
|
|
1159
|
+
by some kind of bracket token, which can be used to make
|
|
1160
|
+
iteration [eagerly](#common.IterMode.EnterBracketed) enter such
|
|
1161
|
+
trees.
|
|
1162
|
+
*/
|
|
1163
|
+
bracketed?: boolean;
|
|
1138
1164
|
}
|
|
1139
1165
|
/**
|
|
1140
1166
|
Create a parse wrapper that, after the inner parse completes,
|
package/dist/index.js
CHANGED
|
@@ -124,10 +124,17 @@ class MountedTree {
|
|
|
124
124
|
/**
|
|
125
125
|
The parser used to create this subtree.
|
|
126
126
|
*/
|
|
127
|
-
parser
|
|
127
|
+
parser,
|
|
128
|
+
/**
|
|
129
|
+
[Indicates](#common.IterMode.EnterBracketed) that the nested
|
|
130
|
+
content is delineated with some kind
|
|
131
|
+
of bracket token.
|
|
132
|
+
*/
|
|
133
|
+
bracketed = false) {
|
|
128
134
|
this.tree = tree;
|
|
129
135
|
this.overlay = overlay;
|
|
130
136
|
this.parser = parser;
|
|
137
|
+
this.bracketed = bracketed;
|
|
131
138
|
}
|
|
132
139
|
/**
|
|
133
140
|
@internal
|
|
@@ -332,6 +339,13 @@ var IterMode;
|
|
|
332
339
|
position.
|
|
333
340
|
*/
|
|
334
341
|
IterMode[IterMode["IgnoreOverlays"] = 8] = "IgnoreOverlays";
|
|
342
|
+
/**
|
|
343
|
+
When set, positions on the boundary of a mounted overlay tree
|
|
344
|
+
that has its [`bracketed`](#common.NestedParse.bracketed) flag
|
|
345
|
+
set will enter that tree regardless of side. Only supported in
|
|
346
|
+
[`enter`](#common.SyntaxNode.enter), not in cursors.
|
|
347
|
+
*/
|
|
348
|
+
IterMode[IterMode["EnterBracketed"] = 16] = "EnterBracketed";
|
|
335
349
|
})(IterMode || (IterMode = {}));
|
|
336
350
|
/**
|
|
337
351
|
A piece of syntax tree. There are two ways to approach these
|
|
@@ -731,8 +745,11 @@ class TreeNode extends BaseNode {
|
|
|
731
745
|
nextChild(i, dir, pos, side, mode = 0) {
|
|
732
746
|
for (let parent = this;;) {
|
|
733
747
|
for (let { children, positions } = parent._tree, e = dir > 0 ? children.length : -1; i != e; i += dir) {
|
|
734
|
-
let next = children[i], start = positions[i] + parent.from;
|
|
735
|
-
if (!
|
|
748
|
+
let next = children[i], start = positions[i] + parent.from, mounted;
|
|
749
|
+
if (!((mode & IterMode.EnterBracketed) && next instanceof Tree &&
|
|
750
|
+
(mounted = MountedTree.get(next)) && !mounted.overlay && mounted.bracketed &&
|
|
751
|
+
pos >= start && pos <= start + next.length) &&
|
|
752
|
+
!checkSide(side, pos, start, start + next.length))
|
|
736
753
|
continue;
|
|
737
754
|
if (next instanceof TreeBuffer) {
|
|
738
755
|
if (mode & IterMode.ExcludeBuffers)
|
|
@@ -747,7 +764,7 @@ class TreeNode extends BaseNode {
|
|
|
747
764
|
return new TreeNode(mounted.tree, start, i, parent);
|
|
748
765
|
let inner = new TreeNode(next, start, i, parent);
|
|
749
766
|
return (mode & IterMode.IncludeAnonymous) || !inner.type.isAnonymous ? inner
|
|
750
|
-
: inner.nextChild(dir < 0 ? next.children.length - 1 : 0, dir, pos, side);
|
|
767
|
+
: inner.nextChild(dir < 0 ? next.children.length - 1 : 0, dir, pos, side, mode);
|
|
751
768
|
}
|
|
752
769
|
}
|
|
753
770
|
if ((mode & IterMode.IncludeAnonymous) || !parent.type.isAnonymous)
|
|
@@ -769,10 +786,10 @@ class TreeNode extends BaseNode {
|
|
|
769
786
|
enter(pos, side, mode = 0) {
|
|
770
787
|
let mounted;
|
|
771
788
|
if (!(mode & IterMode.IgnoreOverlays) && (mounted = MountedTree.get(this._tree)) && mounted.overlay) {
|
|
772
|
-
let rPos = pos - this.from;
|
|
789
|
+
let rPos = pos - this.from, enterBracketed = (mode & IterMode.EnterBracketed) && mounted.bracketed;
|
|
773
790
|
for (let { from, to } of mounted.overlay) {
|
|
774
|
-
if ((side > 0 ? from <= rPos : from < rPos) &&
|
|
775
|
-
(side < 0 ? to >= rPos : to > rPos))
|
|
791
|
+
if ((side > 0 || enterBracketed ? from <= rPos : from < rPos) &&
|
|
792
|
+
(side < 0 || enterBracketed ? to >= rPos : to > rPos))
|
|
776
793
|
return new TreeNode(mounted.tree, mounted.overlay[0].from + this.from, -1, this);
|
|
777
794
|
}
|
|
778
795
|
}
|
|
@@ -961,12 +978,7 @@ class TreeCursor {
|
|
|
961
978
|
/**
|
|
962
979
|
@internal
|
|
963
980
|
*/
|
|
964
|
-
constructor(node,
|
|
965
|
-
/**
|
|
966
|
-
@internal
|
|
967
|
-
*/
|
|
968
|
-
mode = 0) {
|
|
969
|
-
this.mode = mode;
|
|
981
|
+
constructor(node, mode = 0) {
|
|
970
982
|
/**
|
|
971
983
|
@internal
|
|
972
984
|
*/
|
|
@@ -977,6 +989,7 @@ class TreeCursor {
|
|
|
977
989
|
*/
|
|
978
990
|
this.index = 0;
|
|
979
991
|
this.bufferNode = null;
|
|
992
|
+
this.mode = mode & ~IterMode.EnterBracketed;
|
|
980
993
|
if (node instanceof TreeNode) {
|
|
981
994
|
this.yieldNode(node);
|
|
982
995
|
}
|
|
@@ -1768,10 +1781,11 @@ function parseMixed(nest) {
|
|
|
1768
1781
|
return (parse, input, fragments, ranges) => new MixedParse(parse, nest, input, fragments, ranges);
|
|
1769
1782
|
}
|
|
1770
1783
|
class InnerParse {
|
|
1771
|
-
constructor(parser, parse, overlay, target, from) {
|
|
1784
|
+
constructor(parser, parse, overlay, bracketed, target, from) {
|
|
1772
1785
|
this.parser = parser;
|
|
1773
1786
|
this.parse = parse;
|
|
1774
1787
|
this.overlay = overlay;
|
|
1788
|
+
this.bracketed = bracketed;
|
|
1775
1789
|
this.target = target;
|
|
1776
1790
|
this.from = from;
|
|
1777
1791
|
}
|
|
@@ -1781,12 +1795,13 @@ function checkRanges(ranges) {
|
|
|
1781
1795
|
throw new RangeError("Invalid inner parse ranges given: " + JSON.stringify(ranges));
|
|
1782
1796
|
}
|
|
1783
1797
|
class ActiveOverlay {
|
|
1784
|
-
constructor(parser, predicate, mounts, index, start, target, prev) {
|
|
1798
|
+
constructor(parser, predicate, mounts, index, start, bracketed, target, prev) {
|
|
1785
1799
|
this.parser = parser;
|
|
1786
1800
|
this.predicate = predicate;
|
|
1787
1801
|
this.mounts = mounts;
|
|
1788
1802
|
this.index = index;
|
|
1789
1803
|
this.start = start;
|
|
1804
|
+
this.bracketed = bracketed;
|
|
1790
1805
|
this.target = target;
|
|
1791
1806
|
this.prev = prev;
|
|
1792
1807
|
this.depth = 0;
|
|
@@ -1832,7 +1847,7 @@ class MixedParse {
|
|
|
1832
1847
|
// presumably not aliased anywhere else) to hold the information
|
|
1833
1848
|
// about the inner parse.
|
|
1834
1849
|
let props = Object.assign(Object.create(null), inner.target.props);
|
|
1835
|
-
props[NodeProp.mounted.id] = new MountedTree(done, inner.overlay, inner.parser);
|
|
1850
|
+
props[NodeProp.mounted.id] = new MountedTree(done, inner.overlay, inner.parser, inner.bracketed);
|
|
1836
1851
|
inner.target.props = props;
|
|
1837
1852
|
}
|
|
1838
1853
|
return null;
|
|
@@ -1893,7 +1908,7 @@ class MixedParse {
|
|
|
1893
1908
|
}
|
|
1894
1909
|
let oldMounts = fragmentCursor.findMounts(cursor.from, nest.parser);
|
|
1895
1910
|
if (typeof nest.overlay == "function") {
|
|
1896
|
-
overlay = new ActiveOverlay(nest.parser, nest.overlay, oldMounts, this.inner.length, cursor.from, cursor.tree, overlay);
|
|
1911
|
+
overlay = new ActiveOverlay(nest.parser, nest.overlay, oldMounts, this.inner.length, cursor.from, !!nest.bracketed, cursor.tree, overlay);
|
|
1897
1912
|
}
|
|
1898
1913
|
else {
|
|
1899
1914
|
let ranges = punchRanges(this.ranges, nest.overlay ||
|
|
@@ -1902,7 +1917,7 @@ class MixedParse {
|
|
|
1902
1917
|
checkRanges(ranges);
|
|
1903
1918
|
if (ranges.length || !nest.overlay)
|
|
1904
1919
|
this.inner.push(new InnerParse(nest.parser, ranges.length ? nest.parser.startParse(this.input, enterFragments(oldMounts, ranges), ranges)
|
|
1905
|
-
: nest.parser.startParse(""), nest.overlay ? nest.overlay.map(r => new Range(r.from - cursor.from, r.to - cursor.from)) : null, cursor.tree, ranges.length ? ranges[0].from : cursor.from));
|
|
1920
|
+
: nest.parser.startParse(""), nest.overlay ? nest.overlay.map(r => new Range(r.from - cursor.from, r.to - cursor.from)) : null, !!nest.bracketed, cursor.tree, ranges.length ? ranges[0].from : cursor.from));
|
|
1906
1921
|
if (!nest.overlay)
|
|
1907
1922
|
enter = false;
|
|
1908
1923
|
else if (ranges.length)
|
|
@@ -1936,7 +1951,7 @@ class MixedParse {
|
|
|
1936
1951
|
let ranges = punchRanges(this.ranges, overlay.ranges);
|
|
1937
1952
|
if (ranges.length) {
|
|
1938
1953
|
checkRanges(ranges);
|
|
1939
|
-
this.inner.splice(overlay.index, 0, new InnerParse(overlay.parser, overlay.parser.startParse(this.input, enterFragments(overlay.mounts, ranges), ranges), overlay.ranges.map(r => new Range(r.from - overlay.start, r.to - overlay.start)), overlay.target, ranges[0].from));
|
|
1954
|
+
this.inner.splice(overlay.index, 0, new InnerParse(overlay.parser, overlay.parser.startParse(this.input, enterFragments(overlay.mounts, ranges), ranges), overlay.ranges.map(r => new Range(r.from - overlay.start, r.to - overlay.start)), overlay.bracketed, overlay.target, ranges[0].from));
|
|
1940
1955
|
}
|
|
1941
1956
|
overlay = overlay.prev;
|
|
1942
1957
|
}
|