clarity-pattern-parser 11.2.2 → 11.3.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/TODO.md +1 -3
- package/dist/ast/Node.d.ts +3 -0
- package/dist/index.browser.js +35 -19
- package/dist/index.browser.js.map +1 -1
- package/dist/index.esm.js +35 -19
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +35 -19
- package/dist/index.js.map +1 -1
- package/dist/patterns/Cursor.d.ts +2 -2
- package/dist/patterns/CursorHistory.d.ts +2 -6
- package/dist/patterns/HistoryRecord.d.ts +8 -0
- package/package.json +1 -1
- package/src/ast/Node.test.ts +5 -2
- package/src/ast/Node.ts +20 -3
- package/src/generator/generator.test.ts +6 -3
- package/src/grammar/patterns/takeUtilLiteral.ts +0 -1
- package/src/patterns/Cursor.ts +2 -2
- package/src/patterns/CursorHistory.ts +19 -20
- package/src/patterns/FiniteRepeat.test.ts +12 -12
- package/src/patterns/HistoryRecord.ts +9 -0
- package/src/patterns/InfiniteRepeat.test.ts +6 -6
- package/src/patterns/Literal.test.ts +3 -3
- package/src/patterns/Not.test.ts +1 -1
- package/src/patterns/Options.test.ts +3 -3
- package/src/patterns/PrecedenceTree.test.ts +9 -9
- package/src/patterns/Reference.test.ts +1 -1
- package/src/patterns/Reference.ts +1 -1
- package/src/patterns/Regex.test.ts +1 -1
- package/src/patterns/Repeat.test.ts +8 -8
- package/src/patterns/Sequence.test.ts +6 -6
- package/src/patterns/TakeUntil.ts +5 -2
|
@@ -17,7 +17,7 @@ describe("Repeat", () => {
|
|
|
17
17
|
let result = finiteRepeat.parse(cursor);
|
|
18
18
|
let expected: Node | null = null;
|
|
19
19
|
|
|
20
|
-
expect(result).
|
|
20
|
+
expect(result).toBeNull();
|
|
21
21
|
expect(cursor.hasError).toBeTruthy();
|
|
22
22
|
|
|
23
23
|
cursor = new Cursor("1");
|
|
@@ -26,7 +26,7 @@ describe("Repeat", () => {
|
|
|
26
26
|
new Node("regex", "number", 0, 0, [], "1")
|
|
27
27
|
]);
|
|
28
28
|
|
|
29
|
-
expect(result?.
|
|
29
|
+
expect(result?.isEqual(expected));
|
|
30
30
|
expect(cursor.hasError).toBeFalsy();
|
|
31
31
|
|
|
32
32
|
cursor = new Cursor("12");
|
|
@@ -36,7 +36,7 @@ describe("Repeat", () => {
|
|
|
36
36
|
new Node("regex", "number", 1, 1, [], "2")
|
|
37
37
|
]);
|
|
38
38
|
|
|
39
|
-
expect(result?.
|
|
39
|
+
expect(result?.isEqual(expected));
|
|
40
40
|
expect(cursor.hasError).toBeFalsy();
|
|
41
41
|
|
|
42
42
|
cursor = new Cursor("123");
|
|
@@ -46,7 +46,7 @@ describe("Repeat", () => {
|
|
|
46
46
|
new Node("regex", "number", 1, 1, [], "2")
|
|
47
47
|
]);
|
|
48
48
|
|
|
49
|
-
expect(result?.
|
|
49
|
+
expect(result?.isEqual(expected));
|
|
50
50
|
expect(cursor.hasError).toBeFalsy();
|
|
51
51
|
expect(cursor.index).toBe(1);
|
|
52
52
|
});
|
|
@@ -59,14 +59,14 @@ describe("Repeat", () => {
|
|
|
59
59
|
let result = finiteRepeat.parse(cursor);
|
|
60
60
|
let expected: Node | null = null;
|
|
61
61
|
|
|
62
|
-
expect(result).
|
|
62
|
+
expect(result).toBeNull();
|
|
63
63
|
expect(cursor.hasError).toBeTruthy();
|
|
64
64
|
|
|
65
65
|
cursor = new Cursor("1");
|
|
66
66
|
result = finiteRepeat.parse(cursor);
|
|
67
67
|
expected = null;
|
|
68
68
|
|
|
69
|
-
expect(result).
|
|
69
|
+
expect(result).toBeNull();
|
|
70
70
|
expect(cursor.hasError).toBeTruthy();
|
|
71
71
|
|
|
72
72
|
cursor = new Cursor("12");
|
|
@@ -76,7 +76,7 @@ describe("Repeat", () => {
|
|
|
76
76
|
new Node("regex", "number", 1, 1, [], "2")
|
|
77
77
|
]);
|
|
78
78
|
|
|
79
|
-
expect(result?.
|
|
79
|
+
expect(result?.isEqual(expected));
|
|
80
80
|
expect(cursor.hasError).toBeFalsy();
|
|
81
81
|
|
|
82
82
|
cursor = new Cursor("123");
|
|
@@ -86,7 +86,7 @@ describe("Repeat", () => {
|
|
|
86
86
|
new Node("regex", "number", 1, 1, [], "2")
|
|
87
87
|
]);
|
|
88
88
|
|
|
89
|
-
expect(result?.
|
|
89
|
+
expect(result?.isEqual(expected));
|
|
90
90
|
expect(cursor.hasError).toBeFalsy();
|
|
91
91
|
expect(cursor.index).toBe(1);
|
|
92
92
|
});
|
|
@@ -20,7 +20,7 @@ describe("Sequence", () => {
|
|
|
20
20
|
new Node("literal", "a", 0, 0, [], "A")
|
|
21
21
|
]);
|
|
22
22
|
|
|
23
|
-
expect(result).
|
|
23
|
+
expect(result?.isEqual(expected)).toBeTruthy();
|
|
24
24
|
expect(cursor.furthestError).toBe(null);
|
|
25
25
|
expect(cursor.index).toBe(0);
|
|
26
26
|
});
|
|
@@ -48,7 +48,7 @@ describe("Sequence", () => {
|
|
|
48
48
|
new Node("literal", "b", 1, 1, [], "B")
|
|
49
49
|
]);
|
|
50
50
|
|
|
51
|
-
expect(result).
|
|
51
|
+
expect(result?.isEqual(expected)).toBeTruthy();
|
|
52
52
|
expect(cursor.error).toBe(null)
|
|
53
53
|
expect(cursor.index).toBe(1);
|
|
54
54
|
});
|
|
@@ -88,7 +88,7 @@ describe("Sequence", () => {
|
|
|
88
88
|
new Node("literal", "a", 0, 0, [], "A")
|
|
89
89
|
]);
|
|
90
90
|
|
|
91
|
-
expect(result).
|
|
91
|
+
expect(result?.isEqual(expected)).toBeTruthy();
|
|
92
92
|
expect(cursor.error).toBe(null);
|
|
93
93
|
expect(cursor.index).toBe(0);
|
|
94
94
|
});
|
|
@@ -104,7 +104,7 @@ describe("Sequence", () => {
|
|
|
104
104
|
new Node("literal", "a", 0, 0, [], "A")
|
|
105
105
|
]);
|
|
106
106
|
|
|
107
|
-
expect(result).
|
|
107
|
+
expect(result?.isEqual(expected)).toBeTruthy();
|
|
108
108
|
expect(cursor.error).toBe(null)
|
|
109
109
|
expect(cursor.index).toBe(0);
|
|
110
110
|
});
|
|
@@ -135,7 +135,7 @@ describe("Sequence", () => {
|
|
|
135
135
|
new Node("literal", "c", 1, 1, [], "C"),
|
|
136
136
|
]);
|
|
137
137
|
|
|
138
|
-
expect(result).
|
|
138
|
+
expect(result?.isEqual(expected)).toBeTruthy();
|
|
139
139
|
expect(cursor.error).toBe(null)
|
|
140
140
|
expect(cursor.index).toBe(1);
|
|
141
141
|
});
|
|
@@ -186,7 +186,7 @@ describe("Sequence", () => {
|
|
|
186
186
|
new Node("literal", "a", 0, 0, undefined, "A")
|
|
187
187
|
]);
|
|
188
188
|
|
|
189
|
-
expect(result).
|
|
189
|
+
expect(result?.isEqual(expected)).toBeTruthy();
|
|
190
190
|
expect(cursor).not.toBeNull();
|
|
191
191
|
});
|
|
192
192
|
|
|
@@ -16,7 +16,7 @@ export class TakeUntil implements Pattern {
|
|
|
16
16
|
private _startedOnIndex: number;
|
|
17
17
|
private _terminatingPattern: Pattern;
|
|
18
18
|
private _tokens: string[];
|
|
19
|
-
|
|
19
|
+
|
|
20
20
|
get id(): string {
|
|
21
21
|
return this._id;
|
|
22
22
|
}
|
|
@@ -93,7 +93,10 @@ export class TakeUntil implements Pattern {
|
|
|
93
93
|
if (foundMatch) {
|
|
94
94
|
cursor.moveTo(cursorIndex - 1);
|
|
95
95
|
const value = cursor.getChars(this.startedOnIndex, cursorIndex - 1);
|
|
96
|
-
|
|
96
|
+
const node = Node.createValueNode(this._type, this._name, value);
|
|
97
|
+
|
|
98
|
+
cursor.recordMatch(this, node);
|
|
99
|
+
return node;
|
|
97
100
|
} else {
|
|
98
101
|
cursor.moveTo(this.startedOnIndex);
|
|
99
102
|
cursor.recordErrorAt(this._startedOnIndex, this._startedOnIndex, this);
|