clarity-pattern-parser 3.0.16 → 4.0.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.
Files changed (168) hide show
  1. package/README.md +0 -191
  2. package/dist/ast/Node.d.ts +4 -5
  3. package/dist/index.browser.js +476 -731
  4. package/dist/index.browser.js.map +1 -1
  5. package/dist/index.d.ts +10 -18
  6. package/dist/index.esm.js +469 -716
  7. package/dist/index.esm.js.map +1 -1
  8. package/dist/index.js +476 -731
  9. package/dist/index.js.map +1 -1
  10. package/dist/patterns/And.d.ts +24 -0
  11. package/dist/patterns/Literal.d.ts +19 -0
  12. package/dist/patterns/LookAhead.d.ts +8 -0
  13. package/dist/patterns/Not.d.ts +11 -0
  14. package/dist/patterns/Or.d.ts +22 -0
  15. package/dist/patterns/Pattern.d.ts +6 -7
  16. package/dist/patterns/{RecursivePattern.d.ts → Recursive.d.ts} +4 -4
  17. package/dist/patterns/Reference.d.ts +14 -0
  18. package/dist/patterns/Regex.d.ts +21 -0
  19. package/dist/patterns/Repeat.d.ts +20 -0
  20. package/package.json +1 -1
  21. package/src/CursorHistory.ts +1 -1
  22. package/src/ast/Node.ts +20 -17
  23. package/src/ast/Visitor.ts +14 -18
  24. package/src/index.ts +17 -33
  25. package/src/patterns/And.ts +178 -0
  26. package/src/patterns/Literal.ts +91 -0
  27. package/src/patterns/Not.ts +50 -0
  28. package/src/patterns/Or.ts +132 -0
  29. package/src/patterns/Pattern.ts +31 -47
  30. package/src/patterns/Recursive.ts +92 -0
  31. package/src/patterns/{ReferencePattern.ts → Reference.ts} +32 -28
  32. package/src/patterns/Regex.ts +123 -0
  33. package/src/patterns/Repeat.ts +155 -0
  34. package/src/tests/{AndValue.test.ts → And.test.ts} +31 -41
  35. package/src/tests/CursorHistory.test.ts +6 -6
  36. package/src/tests/Cusor.test.ts +7 -10
  37. package/src/tests/Literal.test.ts +3 -5
  38. package/src/tests/LookAhead.test.ts +2 -51
  39. package/src/tests/Not.test.ts +51 -0
  40. package/src/tests/Or.test.ts +113 -0
  41. package/src/tests/Pattern.test.ts +40 -139
  42. package/src/tests/{RecursivePattern.test.ts → Recursive.test.ts} +10 -8
  43. package/src/tests/Reference.test.ts +16 -0
  44. package/src/tests/{RepeatValue.test.ts → Repeat.test.ts} +10 -42
  45. package/src/tests/TextSuggester.test.ts +20 -28
  46. package/src/tests/{NodeVisitor.test.ts → Visitor.test.ts} +42 -21
  47. package/src/tests/cssPatterns/cssValue.ts +2 -2
  48. package/src/tests/cssPatterns/divider.ts +2 -2
  49. package/src/tests/cssPatterns/hex.ts +2 -2
  50. package/src/tests/cssPatterns/method.ts +7 -9
  51. package/src/tests/cssPatterns/name.ts +2 -2
  52. package/src/tests/cssPatterns/number.ts +2 -2
  53. package/src/tests/cssPatterns/optionalSpaces.ts +1 -2
  54. package/src/tests/cssPatterns/spaces.ts +2 -2
  55. package/src/tests/cssPatterns/unit.ts +3 -3
  56. package/src/tests/cssPatterns/value.ts +2 -2
  57. package/src/tests/cssPatterns/values.ts +2 -2
  58. package/src/tests/htmlPatterns/element.ts +18 -33
  59. package/src/tests/javascriptPatterns/boolean.ts +2 -3
  60. package/src/tests/javascriptPatterns/json.ts +14 -26
  61. package/src/tests/javascriptPatterns/name.ts +3 -20
  62. package/src/tests/javascriptPatterns/number.ts +2 -2
  63. package/src/tests/javascriptPatterns/objectLiteral.ts +9 -16
  64. package/src/tests/javascriptPatterns/string.ts +26 -24
  65. package/src/tests/javascriptPatterns/unit.ts +3 -6
  66. package/src/tests/javascriptPatterns/whitespace.ts +8 -12
  67. package/src/tests/naturalLanguage/filter.ts +16 -33
  68. package/src/tests/patterns/sentence.ts +8 -8
  69. package/dist/Cursor.js +0 -105
  70. package/dist/Cursor.js.map +0 -1
  71. package/dist/CursorHistory.js +0 -104
  72. package/dist/CursorHistory.js.map +0 -1
  73. package/dist/Permutor.d.ts +0 -13
  74. package/dist/Permutor.js +0 -52
  75. package/dist/Permutor.js.map +0 -1
  76. package/dist/TextSuggester.js +0 -244
  77. package/dist/TextSuggester.js.map +0 -1
  78. package/dist/ast/CompositeNode.d.ts +0 -6
  79. package/dist/ast/CompositeNode.js +0 -17
  80. package/dist/ast/CompositeNode.js.map +0 -1
  81. package/dist/ast/Node.js +0 -16
  82. package/dist/ast/Node.js.map +0 -1
  83. package/dist/ast/NodeVisitor.d.ts +0 -31
  84. package/dist/ast/ValueNode.d.ts +0 -6
  85. package/dist/ast/ValueNode.js +0 -14
  86. package/dist/ast/ValueNode.js.map +0 -1
  87. package/dist/ast/Visitor.js +0 -209
  88. package/dist/ast/Visitor.js.map +0 -1
  89. package/dist/patterns/ParseError.js +0 -9
  90. package/dist/patterns/ParseError.js.map +0 -1
  91. package/dist/patterns/Pattern.js +0 -127
  92. package/dist/patterns/Pattern.js.map +0 -1
  93. package/dist/patterns/RecursivePattern.js +0 -65
  94. package/dist/patterns/RecursivePattern.js.map +0 -1
  95. package/dist/patterns/composite/AndComposite.d.ts +0 -22
  96. package/dist/patterns/composite/AndComposite.js +0 -117
  97. package/dist/patterns/composite/AndComposite.js.map +0 -1
  98. package/dist/patterns/composite/CompositePattern.d.ts +0 -4
  99. package/dist/patterns/composite/CompositePattern.js +0 -7
  100. package/dist/patterns/composite/CompositePattern.js.map +0 -1
  101. package/dist/patterns/composite/OptionalComposite.d.ts +0 -10
  102. package/dist/patterns/composite/OptionalComposite.js +0 -29
  103. package/dist/patterns/composite/OptionalComposite.js.map +0 -1
  104. package/dist/patterns/composite/OrComposite.d.ts +0 -16
  105. package/dist/patterns/composite/OrComposite.js +0 -69
  106. package/dist/patterns/composite/OrComposite.js.map +0 -1
  107. package/dist/patterns/composite/RepeatComposite.d.ts +0 -21
  108. package/dist/patterns/composite/RepeatComposite.js +0 -88
  109. package/dist/patterns/composite/RepeatComposite.js.map +0 -1
  110. package/dist/patterns/value/AndValue.d.ts +0 -21
  111. package/dist/patterns/value/AndValue.js +0 -118
  112. package/dist/patterns/value/AndValue.js.map +0 -1
  113. package/dist/patterns/value/AnyOfThese.d.ts +0 -18
  114. package/dist/patterns/value/AnyOfThese.js +0 -59
  115. package/dist/patterns/value/AnyOfThese.js.map +0 -1
  116. package/dist/patterns/value/Literal.d.ts +0 -20
  117. package/dist/patterns/value/Literal.js +0 -63
  118. package/dist/patterns/value/Literal.js.map +0 -1
  119. package/dist/patterns/value/NotValue.d.ts +0 -17
  120. package/dist/patterns/value/NotValue.js +0 -70
  121. package/dist/patterns/value/NotValue.js.map +0 -1
  122. package/dist/patterns/value/OptionalValue.d.ts +0 -9
  123. package/dist/patterns/value/OptionalValue.js +0 -32
  124. package/dist/patterns/value/OptionalValue.js.map +0 -1
  125. package/dist/patterns/value/OrValue.d.ts +0 -19
  126. package/dist/patterns/value/OrValue.js +0 -73
  127. package/dist/patterns/value/OrValue.js.map +0 -1
  128. package/dist/patterns/value/RegexValue.d.ts +0 -19
  129. package/dist/patterns/value/RegexValue.js +0 -69
  130. package/dist/patterns/value/RegexValue.js.map +0 -1
  131. package/dist/patterns/value/RepeatValue.d.ts +0 -19
  132. package/dist/patterns/value/RepeatValue.js +0 -89
  133. package/dist/patterns/value/RepeatValue.js.map +0 -1
  134. package/dist/patterns/value/ValuePattern.d.ts +0 -5
  135. package/dist/patterns/value/ValuePattern.js +0 -7
  136. package/dist/patterns/value/ValuePattern.js.map +0 -1
  137. package/src/Permutor.ts +0 -64
  138. package/src/ast/CompositeNode.ts +0 -26
  139. package/src/ast/ValueNode.ts +0 -28
  140. package/src/patterns/RecursivePattern.ts +0 -86
  141. package/src/patterns/composite/AndComposite.ts +0 -159
  142. package/src/patterns/composite/CompositePattern.ts +0 -7
  143. package/src/patterns/composite/OptionalComposite.ts +0 -37
  144. package/src/patterns/composite/OrComposite.ts +0 -96
  145. package/src/patterns/composite/RepeatComposite.ts +0 -130
  146. package/src/patterns/value/AndValue.ts +0 -152
  147. package/src/patterns/value/AnyOfThese.ts +0 -81
  148. package/src/patterns/value/Literal.ts +0 -92
  149. package/src/patterns/value/NotValue.ts +0 -95
  150. package/src/patterns/value/OptionalValue.ts +0 -39
  151. package/src/patterns/value/OrValue.ts +0 -103
  152. package/src/patterns/value/RegexValue.ts +0 -103
  153. package/src/patterns/value/RepeatValue.ts +0 -131
  154. package/src/patterns/value/ValuePattern.ts +0 -8
  155. package/src/tests/AndComposite.test.ts +0 -102
  156. package/src/tests/AnyOfThese.test.ts +0 -74
  157. package/src/tests/CompositeNode.test.ts +0 -33
  158. package/src/tests/NotValue.test.ts +0 -76
  159. package/src/tests/OptionalValue.test.ts +0 -50
  160. package/src/tests/OrComposite.test.ts +0 -75
  161. package/src/tests/OrValue.test.ts +0 -171
  162. package/src/tests/Permutor.test.ts +0 -30
  163. package/src/tests/ReferencePattern.test.ts +0 -24
  164. package/src/tests/RegexValue.test.ts +0 -22
  165. package/src/tests/RepeatComposite.test.ts +0 -58
  166. package/src/tests/ValueNode.test.ts +0 -24
  167. package/src/tests/javascriptPatterns/varStatement.ts +0 -0
  168. package/src/tests/readmeDemo.test.ts +0 -124
@@ -1,31 +0,0 @@
1
- import Node from "./Node";
2
- export default class NodeVisitor {
3
- root: Node | null;
4
- selectedNodes: Node[];
5
- constructor(root: Node | null, selectedNodes?: Node[]);
6
- flatten(): this;
7
- remove(): this;
8
- private recursiveRemove;
9
- wrap(callback: (node: Node) => Node): this;
10
- unwrap(): this;
11
- prepend(callback: (node: Node) => Node): this;
12
- append(callback: (node: Node) => Node): this;
13
- transform(callback: (node: Node) => Node): this;
14
- private recursiveTransform;
15
- walkUp(node: Node, callback: (node: Node, ancestors: Node[]) => void, ancestors?: Node[]): this;
16
- walkDown(node: Node, callback: (node: Node, ancestors: Node[]) => void, ancestors?: Node[]): this;
17
- selectAll(): NodeVisitor;
18
- selectNode(node: Node): NodeVisitor;
19
- deselectNode(node: Node): NodeVisitor;
20
- select(callback: (node: Node) => boolean): NodeVisitor;
21
- forEach(callback: (node: Node) => void): this;
22
- filter(callback: (node: Node) => boolean): NodeVisitor;
23
- map(callback: (node: Node) => Node): NodeVisitor;
24
- selectRoot(): NodeVisitor;
25
- first(): NodeVisitor;
26
- last(): NodeVisitor;
27
- get(index: number): NodeVisitor;
28
- clear(): this;
29
- setRoot(root: Node | null): void;
30
- static select(root: Node, callback?: (node: Node) => boolean): NodeVisitor;
31
- }
@@ -1,6 +0,0 @@
1
- import Node from "./Node";
2
- export default class ValueNode extends Node {
3
- constructor(type: string, name: string, value: string, startIndex?: number, endIndex?: number);
4
- clone(): ValueNode;
5
- toString(): string;
6
- }
@@ -1,14 +0,0 @@
1
- import Node from "./Node";
2
- export default class ValueNode extends Node {
3
- constructor(type, name, value, startIndex = 0, endIndex = 0) {
4
- super(type, name, startIndex, endIndex);
5
- this.value = value;
6
- }
7
- clone() {
8
- return new ValueNode(this.type, this.name, this.value, this.startIndex, this.endIndex);
9
- }
10
- toString() {
11
- return this.value;
12
- }
13
- }
14
- //# sourceMappingURL=ValueNode.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ValueNode.js","sourceRoot":"","sources":["../../src/ast/ValueNode.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,QAAQ,CAAC;AAE1B,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,IAAI;IACzC,YACE,IAAY,EACZ,IAAY,EACZ,KAAa,EACb,UAAU,GAAG,CAAC,EACd,QAAQ,GAAG,CAAC;QAEZ,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;QACxC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,KAAK;QACH,OAAO,IAAI,SAAS,CAClB,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,QAAQ,CACd,CAAC;IACJ,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;CACF"}
@@ -1,209 +0,0 @@
1
- export default class Visitor {
2
- constructor(root = null, selectedNodes = []) {
3
- this.root = root;
4
- this.selectedNodes = selectedNodes;
5
- }
6
- flatten() {
7
- this.selectedNodes.forEach((node) => {
8
- if (node.isComposite) {
9
- const children = [];
10
- Visitor.walkUp(node, (descendant) => {
11
- if (!descendant.isComposite) {
12
- children.push(descendant);
13
- }
14
- });
15
- node.children = children;
16
- }
17
- });
18
- return this;
19
- }
20
- remove() {
21
- if (this.root == null) {
22
- return this;
23
- }
24
- this.recursiveRemove(this.root);
25
- return this;
26
- }
27
- recursiveRemove(node) {
28
- const nodesToRemove = this.selectedNodes;
29
- if (node.isComposite && Array.isArray(node.children)) {
30
- for (let x = 0; x < node.children.length; x++) {
31
- if (nodesToRemove.indexOf(node.children[x]) > -1) {
32
- node.children.splice(x, 1);
33
- x--;
34
- }
35
- else {
36
- this.recursiveRemove(node.children[x]);
37
- }
38
- }
39
- }
40
- }
41
- wrap(callback) {
42
- const visitor = new Visitor(this.root);
43
- visitor.selectRoot().transform((node) => {
44
- if (this.selectedNodes.includes(node)) {
45
- return callback(node);
46
- }
47
- return node;
48
- });
49
- return this;
50
- }
51
- unwrap() {
52
- if (this.root == null) {
53
- return this;
54
- }
55
- Visitor.walkDown(this.root, (node, stack) => {
56
- if (this.selectedNodes.includes(node)) {
57
- const parent = stack[stack.length - 1];
58
- const grandParent = stack[stack.length - 2];
59
- if (parent != null && grandParent != null) {
60
- const index = grandParent.children.indexOf(parent);
61
- if (index > -1) {
62
- grandParent.children.splice(index, 1, ...parent.children);
63
- }
64
- }
65
- }
66
- });
67
- return this;
68
- }
69
- prepend(callback) {
70
- if (this.root == null) {
71
- return this;
72
- }
73
- Visitor.walkUp(this.root, (node, stack) => {
74
- if (this.selectedNodes.includes(node)) {
75
- const parent = stack[stack.length - 1];
76
- if (parent != null) {
77
- const index = parent.children.indexOf(node);
78
- if (index > -1) {
79
- parent.children.splice(index, 0, callback(node));
80
- }
81
- }
82
- }
83
- });
84
- return this;
85
- }
86
- append(callback) {
87
- if (this.root == null) {
88
- return this;
89
- }
90
- Visitor.walkDown(this.root, (node, stack) => {
91
- if (this.selectedNodes.includes(node)) {
92
- const parent = stack[stack.length - 1];
93
- if (parent != null) {
94
- const index = parent.children.indexOf(node);
95
- if (index > -1) {
96
- parent.children.splice(index + 1, 0, callback(node));
97
- }
98
- }
99
- }
100
- });
101
- return this;
102
- }
103
- transform(callback) {
104
- this.selectedNodes.forEach((node) => {
105
- return this.recursiveTransform(node, callback);
106
- });
107
- return this;
108
- }
109
- recursiveTransform(node, callback) {
110
- if (node.isComposite && Array.isArray(node.children)) {
111
- const length = node.children.length;
112
- for (let x = 0; x < length; x++) {
113
- node.children[x] = this.recursiveTransform(node.children[x], callback);
114
- }
115
- }
116
- return callback(node);
117
- }
118
- selectAll() {
119
- return this.select((n) => true);
120
- }
121
- selectNode(node) {
122
- return new Visitor(this.root, [...this.selectedNodes, node]);
123
- }
124
- deselectNode(node) {
125
- const visitor = new Visitor(this.root, this.selectedNodes.slice());
126
- return visitor.filter((n) => n !== node);
127
- }
128
- select(callback) {
129
- if (this.root == null) {
130
- return this;
131
- }
132
- const node = this.root;
133
- const selectedNodes = [];
134
- if (node.isComposite) {
135
- Visitor.walkDown(node, (descendant) => {
136
- if (callback(descendant)) {
137
- selectedNodes.push(descendant);
138
- }
139
- });
140
- }
141
- return new Visitor(this.root, selectedNodes);
142
- }
143
- forEach(callback) {
144
- this.selectedNodes.forEach(callback);
145
- return this;
146
- }
147
- filter(callback) {
148
- return new Visitor(this.root, this.selectedNodes.filter(callback));
149
- }
150
- map(callback) {
151
- return new Visitor(this.root, this.selectedNodes.map(callback));
152
- }
153
- selectRoot() {
154
- if (this.root == null) {
155
- return this;
156
- }
157
- return new Visitor(this.root, [this.root]);
158
- }
159
- first() {
160
- return this.get(0);
161
- }
162
- last() {
163
- return this.get(this.selectedNodes.length - 1);
164
- }
165
- get(index) {
166
- const node = this.selectedNodes[index];
167
- if (node == null) {
168
- throw new Error(`Couldn't find node at index: ${index}, out of ${this.selectedNodes.length}.`);
169
- }
170
- return new Visitor(node, []);
171
- }
172
- clear() {
173
- this.selectedNodes = [];
174
- return this;
175
- }
176
- setRoot(root) {
177
- this.root = root;
178
- return this;
179
- }
180
- static select(root, callback) {
181
- if (callback != null) {
182
- return new Visitor(root).select(callback);
183
- }
184
- else {
185
- return new Visitor(root);
186
- }
187
- }
188
- static walkUp(node, callback, ancestors = []) {
189
- ancestors.push(node);
190
- if (node.isComposite && Array.isArray(node.children)) {
191
- const children = node.children.slice();
192
- children.forEach((c) => this.walkUp(c, callback, ancestors));
193
- }
194
- ancestors.pop();
195
- callback(node, ancestors);
196
- return this;
197
- }
198
- static walkDown(node, callback, ancestors = []) {
199
- callback(node, ancestors);
200
- ancestors.push(node);
201
- if (node.isComposite && Array.isArray(node.children)) {
202
- const children = node.children.slice();
203
- children.forEach((c) => this.walkDown(c, callback, ancestors));
204
- }
205
- ancestors.pop();
206
- return this;
207
- }
208
- }
209
- //# sourceMappingURL=Visitor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Visitor.js","sourceRoot":"","sources":["../../src/ast/Visitor.ts"],"names":[],"mappings":"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"}
@@ -1,9 +0,0 @@
1
- export default class ParseError {
2
- constructor(message, index, pattern) {
3
- this.name = "ParseError";
4
- this.message = message;
5
- this.index = index;
6
- this.pattern = pattern;
7
- }
8
- }
9
- //# sourceMappingURL=ParseError.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ParseError.js","sourceRoot":"","sources":["../../src/patterns/ParseError.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,OAAO,OAAO,UAAU;IAM7B,YAAY,OAAe,EAAE,KAAa,EAAE,OAAgB;QAC1D,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF"}
@@ -1,127 +0,0 @@
1
- import Cursor from "../Cursor";
2
- export default class Pattern {
3
- constructor(type = "", name, children = []) {
4
- this._type = type;
5
- this._name = name;
6
- this._children = [];
7
- this._parent = null;
8
- this.isSequence = false;
9
- this._assertName();
10
- this.children = children;
11
- }
12
- _assertName() {
13
- if (typeof this.name !== "string") {
14
- throw new Error("Invalid Argument: Patterns needs to have a name that's a string.");
15
- }
16
- }
17
- exec(text) {
18
- const cursor = new Cursor(text);
19
- const node = this.parse(cursor);
20
- if (cursor.didSuccessfullyParse()) {
21
- return node;
22
- }
23
- else {
24
- return null;
25
- }
26
- }
27
- test(text) {
28
- return this.exec(text) != null;
29
- }
30
- get name() {
31
- return this._name;
32
- }
33
- get type() {
34
- return this._type;
35
- }
36
- get parent() {
37
- return this._parent;
38
- }
39
- set parent(value) {
40
- if (value instanceof Pattern) {
41
- this._parent = value;
42
- }
43
- }
44
- get children() {
45
- return this._children;
46
- }
47
- set children(value) {
48
- this._children = value;
49
- this._cloneChildren();
50
- this._assertChildren();
51
- this._assignAsParent();
52
- }
53
- _assertChildren() {
54
- // Empty,can be overridden by subclasses.
55
- }
56
- _cloneChildren() {
57
- // We need to clone the patterns so nested patterns can be parsed.
58
- this._children = this._children.map((pattern) => {
59
- if (!(pattern instanceof Pattern)) {
60
- throw new Error(`The ${this.name} pattern has an invalid child pattern.`);
61
- }
62
- return pattern.clone();
63
- });
64
- // We need to freeze the children so they aren't modified.
65
- Object.freeze(this._children);
66
- }
67
- _assignAsParent() {
68
- this._children.forEach((child) => (child.parent = this));
69
- }
70
- getNextTokens() {
71
- var _a, _b, _c;
72
- const parent = this._parent;
73
- if (parent != null) {
74
- const siblings = parent.children;
75
- const index = siblings.findIndex((c) => c === this);
76
- const nextSibling = siblings[index + 1];
77
- // I don't like this, so I think we need to rethink this.
78
- if (parent.type.indexOf("repeat") === 0) {
79
- const tokens = parent.getNextTokens();
80
- if (index === 0 && siblings.length > 1) {
81
- return nextSibling.getTokens().concat(tokens);
82
- }
83
- else if (index === 1) {
84
- return siblings[0].getTokens();
85
- }
86
- else {
87
- return this.getTokens().concat(tokens);
88
- }
89
- }
90
- // Another thing I don't like.
91
- if (((_b = (_a = this._parent) === null || _a === void 0 ? void 0 : _a.type) === null || _b === void 0 ? void 0 : _b.indexOf("and")) === 0 &&
92
- nextSibling != null &&
93
- ((_c = nextSibling === null || nextSibling === void 0 ? void 0 : nextSibling.type) === null || _c === void 0 ? void 0 : _c.indexOf("optional")) === 0) {
94
- let tokens = [];
95
- for (let x = index + 1; x < siblings.length; x++) {
96
- const child = siblings[x];
97
- if (child.type.indexOf("optional") === 0) {
98
- tokens = tokens.concat(child.getTokens());
99
- }
100
- else {
101
- tokens = tokens.concat(child.getTokens());
102
- break;
103
- }
104
- if (x === siblings.length - 1) {
105
- tokens = tokens.concat(this._parent.getNextTokens());
106
- }
107
- }
108
- return tokens;
109
- }
110
- // If you are an or you have already qualified.
111
- if (parent.type.indexOf("or") === 0) {
112
- return parent.getNextTokens();
113
- }
114
- if (nextSibling != null) {
115
- return nextSibling.getTokens();
116
- }
117
- else {
118
- return parent.getNextTokens();
119
- }
120
- }
121
- return [];
122
- }
123
- getTokenValue() {
124
- return null;
125
- }
126
- }
127
- //# sourceMappingURL=Pattern.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Pattern.js","sourceRoot":"","sources":["../../src/patterns/Pattern.ts"],"names":[],"mappings":"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"}
@@ -1,65 +0,0 @@
1
- import Pattern from "./Pattern";
2
- import ParserError from "./ParseError";
3
- export default class RecursivePattern extends Pattern {
4
- constructor(name) {
5
- super("recursive", name);
6
- this.pattern = null;
7
- this.isRecursing = false;
8
- }
9
- getPattern() {
10
- return this._climb(this.parent, (pattern) => {
11
- if (pattern == null) {
12
- return false;
13
- }
14
- return pattern.name === this.name;
15
- });
16
- }
17
- _climb(pattern, isMatch) {
18
- if (isMatch(pattern)) {
19
- return pattern;
20
- }
21
- else {
22
- if (pattern && pattern.parent != null) {
23
- return this._climb(pattern.parent, isMatch);
24
- }
25
- return null;
26
- }
27
- }
28
- parse(cursor) {
29
- if (this.pattern == null) {
30
- const pattern = this.getPattern();
31
- if (pattern == null) {
32
- cursor.throwError(new ParserError(`Couldn't find parent pattern to recursively parse, with the name ${this.name}.`, cursor.index, this));
33
- return null;
34
- }
35
- this.pattern = pattern.clone();
36
- this.pattern.parent = this;
37
- }
38
- const node = this.pattern.parse(cursor);
39
- if (!cursor.hasUnresolvedError() && node != null) {
40
- cursor.addMatch(this, node);
41
- }
42
- return node;
43
- }
44
- clone(name) {
45
- if (typeof name !== "string") {
46
- name = this.name;
47
- }
48
- return new RecursivePattern(name);
49
- }
50
- getTokenValue() {
51
- var _a;
52
- return ((_a = this.getPattern()) === null || _a === void 0 ? void 0 : _a.getTokenValue()) || null;
53
- }
54
- getTokens() {
55
- var _a;
56
- if (!this.isRecursing) {
57
- this.isRecursing = true;
58
- const tokens = ((_a = this.getPattern()) === null || _a === void 0 ? void 0 : _a.getTokens()) || [];
59
- this.isRecursing = false;
60
- return tokens;
61
- }
62
- return [];
63
- }
64
- }
65
- //# sourceMappingURL=RecursivePattern.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RecursivePattern.js","sourceRoot":"","sources":["../../src/patterns/RecursivePattern.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,WAAW,CAAC;AAChC,OAAO,WAAW,MAAM,cAAc,CAAC;AAGvC,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,OAAO;IAInD,YAAY,IAAY;QACtB,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QAHpB,YAAO,GAAmB,IAAI,CAAC;QAIpC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;IAC3B,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,OAAuB,EAAE,EAAE;YAC1D,IAAI,OAAO,IAAI,IAAI,EAAE;gBACnB,OAAO,KAAK,CAAC;aACd;YACD,OAAO,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC;QACpC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CACJ,OAAuB,EACvB,OAA6C;QAE7C,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;YACpB,OAAO,OAAO,CAAC;SAChB;aAAM;YACL,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,IAAI,IAAI,EAAE;gBACrC,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;aAC7C;YACD,OAAO,IAAI,CAAC;SACb;IACH,CAAC;IAED,KAAK,CAAC,MAAc;QAClB,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,EAAE;YACxB,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YAElC,IAAI,OAAO,IAAI,IAAI,EAAE;gBACnB,MAAM,CAAC,UAAU,CACf,IAAI,WAAW,CACb,oEAAoE,IAAI,CAAC,IAAI,GAAG,EAChF,MAAM,CAAC,KAAK,EACZ,IAAe,CAChB,CACF,CAAC;gBACF,OAAO,IAAI,CAAC;aACb;YAED,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;YAC/B,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAe,CAAC;SACvC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAExC,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,IAAI,IAAI,IAAI,IAAI,EAAE;YAChD,MAAM,CAAC,QAAQ,CAAC,IAAe,EAAE,IAAI,CAAC,CAAC;SACxC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,IAAa;QACjB,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;YAC5B,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;SAClB;QACD,OAAO,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAED,aAAa;;QACX,OAAO,CAAA,MAAA,IAAI,CAAC,UAAU,EAAE,0CAAE,aAAa,EAAE,KAAI,IAAI,CAAC;IACpD,CAAC;IAED,SAAS;;QACP,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACrB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YACxB,MAAM,MAAM,GAAG,CAAA,MAAA,IAAI,CAAC,UAAU,EAAE,0CAAE,SAAS,EAAE,KAAI,EAAE,CAAC;YACpD,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YAEzB,OAAO,MAAM,CAAC;SACf;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;CACF"}
@@ -1,22 +0,0 @@
1
- import CompositePattern from "./CompositePattern";
2
- import CompositeNode from "../../ast/CompositeNode";
3
- import Pattern from "../Pattern";
4
- import Cursor from "../../Cursor";
5
- export default class AndComposite extends CompositePattern {
6
- index: number;
7
- nodes: CompositeNode[];
8
- node: CompositeNode | null;
9
- cursor: Cursor;
10
- mark: number;
11
- constructor(name: string, patterns?: Pattern[]);
12
- private _assertArguments;
13
- private _reset;
14
- parse(cursor: Cursor): CompositeNode | null;
15
- private _tryPatterns;
16
- private _next;
17
- private _hasMorePatterns;
18
- private _assertRestOfPatternsAreOptional;
19
- private _processValue;
20
- clone(name?: string): AndComposite;
21
- getTokens(): string[];
22
- }
@@ -1,117 +0,0 @@
1
- import CompositePattern from "./CompositePattern";
2
- import CompositeNode from "../../ast/CompositeNode";
3
- import ParseError from "../../patterns/ParseError";
4
- import OptionalValue from "../value/OptionalValue";
5
- import OptionalComposite from "./OptionalComposite";
6
- export default class AndComposite extends CompositePattern {
7
- constructor(name, patterns = []) {
8
- super("and-composite", name, patterns);
9
- this._assertArguments();
10
- }
11
- _assertArguments() {
12
- if (this._children.length < 2) {
13
- throw new Error("Invalid Argument: AndValue needs to have more than one value pattern.");
14
- }
15
- }
16
- _reset(cursor) {
17
- this.index = 0;
18
- this.nodes = [];
19
- this.node = null;
20
- this.cursor = cursor;
21
- this.mark = this.cursor.mark();
22
- }
23
- parse(cursor) {
24
- this._reset(cursor);
25
- this._tryPatterns();
26
- return this.node;
27
- }
28
- _tryPatterns() {
29
- while (true) {
30
- const pattern = this._children[this.index];
31
- const node = pattern.parse(this.cursor);
32
- if (this.cursor.hasUnresolvedError()) {
33
- this.cursor.moveToMark(this.mark);
34
- break;
35
- }
36
- else {
37
- this.nodes.push(node);
38
- }
39
- if (!this._next()) {
40
- this._processValue();
41
- break;
42
- }
43
- }
44
- }
45
- _next() {
46
- if (this._hasMorePatterns()) {
47
- if (this.cursor.hasNext()) {
48
- // If the last result was a failed optional, then don't increment the cursor.
49
- if (this.nodes[this.nodes.length - 1] != null) {
50
- this.cursor.next();
51
- }
52
- this.index++;
53
- return true;
54
- }
55
- else if (this.nodes[this.nodes.length - 1] == null) {
56
- this.index++;
57
- return true;
58
- }
59
- this._assertRestOfPatternsAreOptional();
60
- return false;
61
- }
62
- else {
63
- return false;
64
- }
65
- }
66
- _hasMorePatterns() {
67
- return this.index + 1 < this._children.length;
68
- }
69
- _assertRestOfPatternsAreOptional() {
70
- const areTheRestOptional = this.children.every((pattern, index) => {
71
- return (index <= this.index ||
72
- pattern instanceof OptionalValue ||
73
- pattern instanceof OptionalComposite);
74
- });
75
- if (!areTheRestOptional) {
76
- const parseError = new ParseError(`Could not match ${this.name} before string ran out.`, this.index, this);
77
- this.cursor.throwError(parseError);
78
- }
79
- }
80
- _processValue() {
81
- if (!this.cursor.hasUnresolvedError()) {
82
- this.nodes = this.nodes.filter((node) => node != null);
83
- const lastNode = this.nodes[this.nodes.length - 1];
84
- const startIndex = this.mark;
85
- const endIndex = lastNode.endIndex;
86
- this.node = new CompositeNode("and-composite", this.name, startIndex, endIndex);
87
- this.node.children = this.nodes;
88
- this.cursor.index = this.node.endIndex;
89
- this.cursor.addMatch(this, this.node);
90
- }
91
- else {
92
- this.node = null;
93
- }
94
- }
95
- clone(name) {
96
- if (typeof name !== "string") {
97
- name = this.name;
98
- }
99
- return new AndComposite(name, this._children);
100
- }
101
- getTokens() {
102
- let tokens = [];
103
- for (let x = 0; x < this._children.length; x++) {
104
- const child = this._children[x];
105
- if (child instanceof OptionalValue ||
106
- child instanceof OptionalComposite) {
107
- tokens = tokens.concat(child.getTokens());
108
- }
109
- else {
110
- tokens = tokens.concat(child.getTokens());
111
- break;
112
- }
113
- }
114
- return tokens;
115
- }
116
- }
117
- //# sourceMappingURL=AndComposite.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AndComposite.js","sourceRoot":"","sources":["../../../src/patterns/composite/AndComposite.ts"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- import Pattern from "../Pattern";
2
- export default abstract class CompositePattern extends Pattern {
3
- constructor(type: string, name: string, children?: Pattern[]);
4
- }
@@ -1,7 +0,0 @@
1
- import Pattern from "../Pattern";
2
- export default class CompositePattern extends Pattern {
3
- constructor(type, name, children = []) {
4
- super(type, name, children);
5
- }
6
- }
7
- //# sourceMappingURL=CompositePattern.js.map