clarity-pattern-parser 3.0.16 → 4.0.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.
Files changed (169) 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/TextSuggester.ts +1 -1
  23. package/src/ast/Node.ts +20 -17
  24. package/src/ast/Visitor.ts +14 -18
  25. package/src/index.ts +17 -33
  26. package/src/patterns/And.ts +178 -0
  27. package/src/patterns/Literal.ts +91 -0
  28. package/src/patterns/Not.ts +50 -0
  29. package/src/patterns/Or.ts +132 -0
  30. package/src/patterns/Pattern.ts +31 -47
  31. package/src/patterns/Recursive.ts +92 -0
  32. package/src/patterns/{ReferencePattern.ts → Reference.ts} +32 -28
  33. package/src/patterns/Regex.ts +123 -0
  34. package/src/patterns/Repeat.ts +155 -0
  35. package/src/tests/{AndValue.test.ts → And.test.ts} +31 -41
  36. package/src/tests/CursorHistory.test.ts +6 -6
  37. package/src/tests/Cusor.test.ts +7 -10
  38. package/src/tests/Literal.test.ts +3 -5
  39. package/src/tests/LookAhead.test.ts +2 -51
  40. package/src/tests/Not.test.ts +51 -0
  41. package/src/tests/Or.test.ts +113 -0
  42. package/src/tests/Pattern.test.ts +40 -139
  43. package/src/tests/{RecursivePattern.test.ts → Recursive.test.ts} +10 -8
  44. package/src/tests/Reference.test.ts +16 -0
  45. package/src/tests/{RepeatValue.test.ts → Repeat.test.ts} +10 -42
  46. package/src/tests/TextSuggester.test.ts +30 -28
  47. package/src/tests/{NodeVisitor.test.ts → Visitor.test.ts} +42 -21
  48. package/src/tests/cssPatterns/cssValue.ts +2 -2
  49. package/src/tests/cssPatterns/divider.ts +2 -2
  50. package/src/tests/cssPatterns/hex.ts +2 -2
  51. package/src/tests/cssPatterns/method.ts +7 -9
  52. package/src/tests/cssPatterns/name.ts +2 -2
  53. package/src/tests/cssPatterns/number.ts +2 -2
  54. package/src/tests/cssPatterns/optionalSpaces.ts +1 -2
  55. package/src/tests/cssPatterns/spaces.ts +2 -2
  56. package/src/tests/cssPatterns/unit.ts +3 -3
  57. package/src/tests/cssPatterns/value.ts +2 -2
  58. package/src/tests/cssPatterns/values.ts +2 -2
  59. package/src/tests/htmlPatterns/element.ts +18 -33
  60. package/src/tests/javascriptPatterns/boolean.ts +2 -3
  61. package/src/tests/javascriptPatterns/json.ts +14 -26
  62. package/src/tests/javascriptPatterns/name.ts +3 -20
  63. package/src/tests/javascriptPatterns/number.ts +2 -2
  64. package/src/tests/javascriptPatterns/objectLiteral.ts +9 -16
  65. package/src/tests/javascriptPatterns/string.ts +26 -24
  66. package/src/tests/javascriptPatterns/unit.ts +3 -6
  67. package/src/tests/javascriptPatterns/whitespace.ts +8 -12
  68. package/src/tests/naturalLanguage/filter.ts +16 -33
  69. package/src/tests/patterns/sentence.ts +8 -8
  70. package/dist/Cursor.js +0 -105
  71. package/dist/Cursor.js.map +0 -1
  72. package/dist/CursorHistory.js +0 -104
  73. package/dist/CursorHistory.js.map +0 -1
  74. package/dist/Permutor.d.ts +0 -13
  75. package/dist/Permutor.js +0 -52
  76. package/dist/Permutor.js.map +0 -1
  77. package/dist/TextSuggester.js +0 -244
  78. package/dist/TextSuggester.js.map +0 -1
  79. package/dist/ast/CompositeNode.d.ts +0 -6
  80. package/dist/ast/CompositeNode.js +0 -17
  81. package/dist/ast/CompositeNode.js.map +0 -1
  82. package/dist/ast/Node.js +0 -16
  83. package/dist/ast/Node.js.map +0 -1
  84. package/dist/ast/NodeVisitor.d.ts +0 -31
  85. package/dist/ast/ValueNode.d.ts +0 -6
  86. package/dist/ast/ValueNode.js +0 -14
  87. package/dist/ast/ValueNode.js.map +0 -1
  88. package/dist/ast/Visitor.js +0 -209
  89. package/dist/ast/Visitor.js.map +0 -1
  90. package/dist/patterns/ParseError.js +0 -9
  91. package/dist/patterns/ParseError.js.map +0 -1
  92. package/dist/patterns/Pattern.js +0 -127
  93. package/dist/patterns/Pattern.js.map +0 -1
  94. package/dist/patterns/RecursivePattern.js +0 -65
  95. package/dist/patterns/RecursivePattern.js.map +0 -1
  96. package/dist/patterns/composite/AndComposite.d.ts +0 -22
  97. package/dist/patterns/composite/AndComposite.js +0 -117
  98. package/dist/patterns/composite/AndComposite.js.map +0 -1
  99. package/dist/patterns/composite/CompositePattern.d.ts +0 -4
  100. package/dist/patterns/composite/CompositePattern.js +0 -7
  101. package/dist/patterns/composite/CompositePattern.js.map +0 -1
  102. package/dist/patterns/composite/OptionalComposite.d.ts +0 -10
  103. package/dist/patterns/composite/OptionalComposite.js +0 -29
  104. package/dist/patterns/composite/OptionalComposite.js.map +0 -1
  105. package/dist/patterns/composite/OrComposite.d.ts +0 -16
  106. package/dist/patterns/composite/OrComposite.js +0 -69
  107. package/dist/patterns/composite/OrComposite.js.map +0 -1
  108. package/dist/patterns/composite/RepeatComposite.d.ts +0 -21
  109. package/dist/patterns/composite/RepeatComposite.js +0 -88
  110. package/dist/patterns/composite/RepeatComposite.js.map +0 -1
  111. package/dist/patterns/value/AndValue.d.ts +0 -21
  112. package/dist/patterns/value/AndValue.js +0 -118
  113. package/dist/patterns/value/AndValue.js.map +0 -1
  114. package/dist/patterns/value/AnyOfThese.d.ts +0 -18
  115. package/dist/patterns/value/AnyOfThese.js +0 -59
  116. package/dist/patterns/value/AnyOfThese.js.map +0 -1
  117. package/dist/patterns/value/Literal.d.ts +0 -20
  118. package/dist/patterns/value/Literal.js +0 -63
  119. package/dist/patterns/value/Literal.js.map +0 -1
  120. package/dist/patterns/value/NotValue.d.ts +0 -17
  121. package/dist/patterns/value/NotValue.js +0 -70
  122. package/dist/patterns/value/NotValue.js.map +0 -1
  123. package/dist/patterns/value/OptionalValue.d.ts +0 -9
  124. package/dist/patterns/value/OptionalValue.js +0 -32
  125. package/dist/patterns/value/OptionalValue.js.map +0 -1
  126. package/dist/patterns/value/OrValue.d.ts +0 -19
  127. package/dist/patterns/value/OrValue.js +0 -73
  128. package/dist/patterns/value/OrValue.js.map +0 -1
  129. package/dist/patterns/value/RegexValue.d.ts +0 -19
  130. package/dist/patterns/value/RegexValue.js +0 -69
  131. package/dist/patterns/value/RegexValue.js.map +0 -1
  132. package/dist/patterns/value/RepeatValue.d.ts +0 -19
  133. package/dist/patterns/value/RepeatValue.js +0 -89
  134. package/dist/patterns/value/RepeatValue.js.map +0 -1
  135. package/dist/patterns/value/ValuePattern.d.ts +0 -5
  136. package/dist/patterns/value/ValuePattern.js +0 -7
  137. package/dist/patterns/value/ValuePattern.js.map +0 -1
  138. package/src/Permutor.ts +0 -64
  139. package/src/ast/CompositeNode.ts +0 -26
  140. package/src/ast/ValueNode.ts +0 -28
  141. package/src/patterns/RecursivePattern.ts +0 -86
  142. package/src/patterns/composite/AndComposite.ts +0 -159
  143. package/src/patterns/composite/CompositePattern.ts +0 -7
  144. package/src/patterns/composite/OptionalComposite.ts +0 -37
  145. package/src/patterns/composite/OrComposite.ts +0 -96
  146. package/src/patterns/composite/RepeatComposite.ts +0 -130
  147. package/src/patterns/value/AndValue.ts +0 -152
  148. package/src/patterns/value/AnyOfThese.ts +0 -81
  149. package/src/patterns/value/Literal.ts +0 -92
  150. package/src/patterns/value/NotValue.ts +0 -95
  151. package/src/patterns/value/OptionalValue.ts +0 -39
  152. package/src/patterns/value/OrValue.ts +0 -103
  153. package/src/patterns/value/RegexValue.ts +0 -103
  154. package/src/patterns/value/RepeatValue.ts +0 -131
  155. package/src/patterns/value/ValuePattern.ts +0 -8
  156. package/src/tests/AndComposite.test.ts +0 -102
  157. package/src/tests/AnyOfThese.test.ts +0 -74
  158. package/src/tests/CompositeNode.test.ts +0 -33
  159. package/src/tests/NotValue.test.ts +0 -76
  160. package/src/tests/OptionalValue.test.ts +0 -50
  161. package/src/tests/OrComposite.test.ts +0 -75
  162. package/src/tests/OrValue.test.ts +0 -171
  163. package/src/tests/Permutor.test.ts +0 -30
  164. package/src/tests/ReferencePattern.test.ts +0 -24
  165. package/src/tests/RegexValue.test.ts +0 -22
  166. package/src/tests/RepeatComposite.test.ts +0 -58
  167. package/src/tests/ValueNode.test.ts +0 -24
  168. package/src/tests/javascriptPatterns/varStatement.ts +0 -0
  169. package/src/tests/readmeDemo.test.ts +0 -124
@@ -1,16 +1,14 @@
1
1
  /** @jest-environment node */
2
- import CompositeNode from "../ast/CompositeNode";
3
- import Visitor from "../ast/Visitor";
4
- import ValueNode from "../ast/ValueNode";
2
+ import { Visitor, Node } from "../index";
5
3
  import cssValue from "./cssPatterns/cssValue";
6
4
 
7
5
  function createContext(amount: number = 10) {
8
- const grandParent = new CompositeNode("grand-parent", "grand-parent");
9
- const parent = new CompositeNode("parent", "parent");
10
- const children: ValueNode[] = [];
6
+ const grandParent = new Node("grand-parent", "grand-parent", 0, 0);
7
+ const parent = new Node("parent", "parent", 0, 0);
8
+ const children: Node[] = [];
11
9
 
12
10
  for (let x = 0; x < amount; x++) {
13
- const child = new ValueNode("child", "child", x.toString());
11
+ const child = new Node("child", "child", 0, 0, [], x.toString());
14
12
  children.push(child);
15
13
  }
16
14
 
@@ -35,7 +33,9 @@ describe("Visitor", () => {
35
33
  });
36
34
 
37
35
  test("remove", () => {
38
- const node = cssValue.exec("linear-gradient(to left, #333, #333 50%, #eee 75%, #333 75%), linear-gradient(to bottom, #555, #555 50%, #eee 75%, #555 75%)");
36
+ const node = cssValue.exec(
37
+ "linear-gradient(to left, #333, #333 50%, #eee 75%, #333 75%), linear-gradient(to bottom, #555, #555 50%, #eee 75%, #555 75%)"
38
+ );
39
39
 
40
40
  if (node != null) {
41
41
  const visitor = new Visitor(node);
@@ -59,15 +59,19 @@ describe("Visitor", () => {
59
59
  const stringResult = visitor
60
60
  .select((n) => n.name === "child")
61
61
  .wrap((node) => {
62
- const wrapper = new CompositeNode("wrapper", "wrapper");
62
+ const wrapper = new Node("wrapper", "wrapper", 0, 0);
63
63
  wrapper.children.push(node);
64
64
  return wrapper;
65
65
  });
66
66
 
67
- let wrappers = Visitor.select(node, (n) => n.type === "wrapper")
68
- .selectedNodes;
69
- let children = Visitor.select(node, (n) => n.type === "child")
70
- .selectedNodes;
67
+ let wrappers = Visitor.select(
68
+ node,
69
+ (n) => n.type === "wrapper"
70
+ ).selectedNodes;
71
+ let children = Visitor.select(
72
+ node,
73
+ (n) => n.type === "child"
74
+ ).selectedNodes;
71
75
 
72
76
  expect(wrappers.length).toBe(10);
73
77
  expect(children.length).toBe(10);
@@ -90,13 +94,21 @@ describe("Visitor", () => {
90
94
  visitor
91
95
  .select((n) => n.type === "child")
92
96
  .prepend((n) => {
93
- const sibling = new ValueNode("sibling", "sibling", n.value || "");
97
+ const sibling = new Node(
98
+ "sibling",
99
+ "sibling",
100
+ 0,
101
+ 0,
102
+ [],
103
+ n.value || ""
104
+ );
94
105
 
95
106
  return sibling;
96
107
  });
97
108
 
98
- const siblings = visitor.select((n) => n.type === "sibling")
99
- .selectedNodes;
109
+ const siblings = visitor.select(
110
+ (n) => n.type === "sibling"
111
+ ).selectedNodes;
100
112
  const parent = visitor.select((n) => n.type === "parent")
101
113
  .selectedNodes[0];
102
114
 
@@ -174,13 +186,21 @@ describe("Visitor", () => {
174
186
  visitor
175
187
  .select((n) => n.type === "child")
176
188
  .append((n) => {
177
- const sibling = new ValueNode("sibling", "sibling", n.value || "");
189
+ const sibling = new Node(
190
+ "sibling",
191
+ "sibling",
192
+ 0,
193
+ 0,
194
+ [],
195
+ n.value || ""
196
+ );
178
197
 
179
198
  return sibling;
180
199
  });
181
200
 
182
- const siblings = visitor.select((n) => n.type === "sibling")
183
- .selectedNodes;
201
+ const siblings = visitor.select(
202
+ (n) => n.type === "sibling"
203
+ ).selectedNodes;
184
204
  const parent = visitor.select((n) => n.type === "parent")
185
205
  .selectedNodes[0];
186
206
 
@@ -288,8 +308,9 @@ describe("Visitor", () => {
288
308
 
289
309
  if (node != null) {
290
310
  const visitor = new Visitor(node);
291
- const selected = visitor.selectNode(node).deselectNode(node)
292
- .selectedNodes;
311
+ const selected = visitor
312
+ .selectNode(node)
313
+ .deselectNode(node).selectedNodes;
293
314
 
294
315
  expect(selected.length).toBe(0);
295
316
  }
@@ -1,7 +1,7 @@
1
- import { RepeatComposite } from "../../index";
1
+ import { Repeat } from "../../index";
2
2
  import divider from "./divider";
3
3
  import values from "./values";
4
4
 
5
- const cssValue = new RepeatComposite("css-value", values, divider);
5
+ const cssValue = new Repeat("css-value", values, divider);
6
6
 
7
7
  export default cssValue;
@@ -1,5 +1,5 @@
1
- import { RegexValue } from "../../index";
1
+ import { Regex } from "../../index";
2
2
 
3
- const divider = new RegexValue(",", "\\s*[,]\\s*");
3
+ const divider = new Regex(",", "\\s*[,]\\s*");
4
4
 
5
5
  export default divider;
@@ -1,5 +1,5 @@
1
- import { RegexValue } from "../../index";
1
+ import { Regex } from "../../index";
2
2
 
3
- const hex = new RegexValue("#______", "#[0-9a-fA-F]{6}|#[0-9a-fA-F]{3}");
3
+ const hex = new Regex("#______", "#[0-9a-fA-F]{6}|#[0-9a-fA-F]{3}");
4
4
 
5
5
  export default hex;
@@ -1,9 +1,8 @@
1
1
  import {
2
2
  Literal,
3
- AndComposite,
4
- RepeatComposite,
5
- RecursivePattern,
6
- OptionalComposite
3
+ And,
4
+ Repeat,
5
+ Recursive,
7
6
  } from "../../index";
8
7
 
9
8
  import name from "./name";
@@ -12,15 +11,14 @@ import divider from "./divider";
12
11
 
13
12
  const openParen = new Literal("open-paren", "(");
14
13
  const closeParen = new Literal("close-paren", ")");
15
- const values = new RecursivePattern("values");
16
- const args = new RepeatComposite("arguments", values, divider);
17
- const optionalArgs = new OptionalComposite(args);
14
+ const values = new Recursive("values");
15
+ const args = new Repeat("arguments", values, divider, true);
18
16
 
19
- const method = new AndComposite("method", [
17
+ const method = new And("method", [
20
18
  name.clone("[Method Name]"),
21
19
  openParen,
22
20
  optionalSpaces,
23
- optionalArgs,
21
+ args,
24
22
  optionalSpaces,
25
23
  closeParen
26
24
  ]);
@@ -1,5 +1,5 @@
1
- import { RegexValue } from "../../index";
1
+ import { Regex } from "../../index";
2
2
 
3
- const name = new RegexValue("name", "[a-zA-Z]+[a-zA-Z0-9_-]*");
3
+ const name = new Regex("name", "[a-zA-Z]+[a-zA-Z0-9_-]*");
4
4
 
5
5
  export default name;
@@ -1,6 +1,6 @@
1
- import { RegexValue } from "../../index";
1
+ import { Regex } from "../../index";
2
2
 
3
- const number = new RegexValue(
3
+ const number = new Regex(
4
4
  "[Number]",
5
5
  "[-+]?[0-9]*[.]?[0-9]+([eE][-+]?[0-9]+)?"
6
6
  );
@@ -1,6 +1,5 @@
1
- import { OptionalValue } from "../../index";
2
1
  import spaces from "./spaces";
3
2
 
4
- const optionalSpaces = new OptionalValue(spaces);
3
+ const optionalSpaces = spaces.clone(spaces.name, true);
5
4
 
6
5
  export default optionalSpaces;
@@ -1,5 +1,5 @@
1
- import { RegexValue } from "../../index";
1
+ import { Regex } from "../../index";
2
2
 
3
- const spaces = new RegexValue(" ", "\\s+");
3
+ const spaces = new Regex(" ", "\\s+");
4
4
 
5
5
  export default spaces;
@@ -1,8 +1,8 @@
1
- import { AndComposite, RegexValue } from "../../index";
1
+ import { And, Regex } from "../../index";
2
2
 
3
3
  import number from "./number";
4
4
 
5
- const unitType = new RegexValue("[unit]", "[a-zA-Z%]+");
6
- const unit = new AndComposite("unit", [number, unitType]);
5
+ const unitType = new Regex("[unit]", "[a-zA-Z%]+");
6
+ const unit = new And("unit", [number, unitType]);
7
7
 
8
8
  export default unit;
@@ -1,10 +1,10 @@
1
- import { OrComposite } from "../../index";
1
+ import { Or } from "../../index";
2
2
  import unit from "./unit";
3
3
  import hex from "./hex";
4
4
  import number from "./number";
5
5
  import method from "./method";
6
6
  import name from "./name"
7
7
 
8
- const value = new OrComposite("value", [hex, method, unit, number, name]);
8
+ const value = new Or("value", [hex, method, unit, number, name]);
9
9
 
10
10
  export default value;
@@ -1,7 +1,7 @@
1
- import { RepeatComposite } from "../../index";
1
+ import { Repeat } from "../../index";
2
2
  import value from "./value";
3
3
  import spaces from "./spaces";
4
4
 
5
- const values = new RepeatComposite("values", value, spaces);
5
+ const values = new Repeat("values", value, spaces);
6
6
 
7
7
  export default values;
@@ -1,64 +1,49 @@
1
- import {
2
- Literal,
3
- OptionalValue,
4
- AndValue,
5
- OrValue,
6
- AndComposite,
7
- OrComposite,
8
- RegexValue,
9
- NotValue,
10
- RepeatComposite,
11
- RecursivePattern,
12
- OptionalComposite
13
- } from "../../index";
1
+ import { Literal, And, Or, Regex, Repeat, Recursive } from "../../index";
14
2
 
15
- const attributeName = new RegexValue(
16
- "attribute-name",
17
- "[a-zA-Z_:]+[a-zA-Z0-9_]*"
18
- );
3
+ const attributeName = new Regex("attribute-name", "[a-zA-Z_:]+[a-zA-Z0-9_]*");
19
4
 
20
5
  const doubleQuote = new Literal("double-quote", '"');
21
6
  const greaterThan = new Literal("greater-than", ">");
22
7
  const lessThan = new Literal("less-than", "<");
23
8
  const forwardSlash = new Literal("forward-slash", "/");
24
9
  const equal = new Literal("equal", "=");
25
- const spaces = new RegexValue(" ", "\\s+");
26
- const optionalSpaces = new OptionalValue(spaces);
27
-
28
- const value = new RegexValue("value", '[^"]+');
10
+ const spaces = new Regex(" ", "\\s+", true);
11
+ const optionalSpaces = spaces.clone("optional-spaces", true);
12
+ const value = new Regex("value", '[^"]+');
29
13
 
30
- export const attribute = new AndComposite("attribute", [
14
+ export const attribute = new And("attribute", [
31
15
  attributeName,
32
16
  equal,
33
17
  doubleQuote,
34
18
  value,
35
- doubleQuote
19
+ doubleQuote,
36
20
  ]);
37
- const attributes = new RepeatComposite("attributes", attribute, spaces);
38
- const optionalAttributes = new OptionalComposite(attributes);
21
+ const optionalAttributes = new Repeat("attributes", attribute, spaces, true);
39
22
 
40
- const elementName = new RegexValue("element-name", "[a-zA-Z]+[a-zA-Z-]*");
41
- const text = new RegexValue("text", "[^<>]+");
42
- const recursiveElement = new RecursivePattern("element");
23
+ const elementName = new Regex("element-name", "[a-zA-Z]+[a-zA-Z-]*");
24
+ const text = new Regex("text", "[^<>]+");
25
+ const recursiveElement = new Recursive("element");
43
26
 
44
- const elementContent = new RepeatComposite(
27
+ const elementContent = new Repeat(
45
28
  "children",
46
- new OrComposite("content", [text, recursiveElement])
29
+ new Or("content", [text, recursiveElement]),
30
+ undefined,
31
+ true
47
32
  );
48
33
 
49
- const element = new AndComposite("element", [
34
+ const element = new And("element", [
50
35
  lessThan,
51
36
  elementName.clone("open-element-name"),
52
37
  optionalSpaces,
53
38
  optionalAttributes,
54
39
  optionalSpaces,
55
40
  greaterThan,
56
- new OptionalComposite(elementContent),
41
+ elementContent,
57
42
  lessThan,
58
43
  forwardSlash,
59
44
  elementName.clone("close-element-name"),
60
45
  optionalSpaces,
61
- greaterThan
46
+ greaterThan,
62
47
  ]);
63
48
 
64
49
  export default element;
@@ -1,9 +1,8 @@
1
- import Literal from "../../patterns/value/Literal";
2
- import OrValue from "../../patterns/value/OrValue";
1
+ import {Literal, Or} from "../../index";
3
2
 
4
3
  const trueLiteral = new Literal("true", "true");
5
4
  const falseLiteral = new Literal("false", "false");
6
- const boolean = new OrValue("boolean", [
5
+ const boolean = new Or("boolean", [
7
6
  trueLiteral,
8
7
  falseLiteral
9
8
  ]);
@@ -1,14 +1,4 @@
1
- import RecursivePattern from "../../patterns/RecursivePattern";
2
- import {
3
- Literal,
4
- AndComposite,
5
- RepeatValue,
6
- OptionalValue,
7
- RepeatComposite,
8
- OptionalComposite,
9
- OrComposite,
10
- AndValue,
11
- } from "../../index";
1
+ import { Literal, And, Repeat, Or, Recursive } from "../../index";
12
2
 
13
3
  import string from "./string";
14
4
  import number from "./number";
@@ -20,25 +10,25 @@ const openSquareBracket = new Literal("open-square-bracket", "[");
20
10
  const closeSquareBracket = new Literal("close-square-bracket", "]");
21
11
  const colon = new Literal(":", ":");
22
12
  const space = new Literal("space", " ");
23
- const spaces = new RepeatValue("spaces", space);
24
- const optionalSpaces = new OptionalValue(spaces);
13
+ const spaces = new Repeat("spaces", space);
14
+ const optionalSpaces = spaces.clone("optional-spaces", true);
25
15
  const nullLiteral = new Literal("null", "null");
26
16
  const comma = new Literal(",", ",");
27
17
 
28
- const divider = new AndValue("divider", [
18
+ const divider = new And("divider", [
29
19
  optionalSpaces,
30
20
  comma,
31
21
  optionalSpaces,
32
22
  ]);
33
23
 
34
- const arrayValues = new RepeatComposite(
24
+ const arrayValues = new Repeat(
35
25
  "values",
36
- new RecursivePattern("literals"),
26
+ new Recursive("literals"),
37
27
  divider
38
28
  );
39
- const optionalArrayValues = new OptionalComposite(arrayValues);
29
+ const optionalArrayValues = arrayValues.clone("optional-values", true);
40
30
 
41
- const arrayLiteral = new AndComposite("array-literal", [
31
+ const arrayLiteral = new And("array-literal", [
42
32
  openSquareBracket,
43
33
  optionalSpaces,
44
34
  optionalArrayValues,
@@ -46,18 +36,18 @@ const arrayLiteral = new AndComposite("array-literal", [
46
36
  closeSquareBracket,
47
37
  ]);
48
38
 
49
- const keyValue = new AndComposite("key-value", [
39
+ const keyValue = new And("key-value", [
50
40
  string,
51
41
  optionalSpaces,
52
42
  colon,
53
43
  optionalSpaces,
54
- new RecursivePattern("literals"),
44
+ new Recursive("literals"),
55
45
  ]);
56
46
 
57
- const keyValues = new RepeatComposite("key-values", keyValue, divider);
58
- const optionalKeyValues = new OptionalComposite(keyValues);
47
+ const keyValues = new Repeat("key-values", keyValue, divider);
48
+ const optionalKeyValues = keyValues.clone("optional-key-values", true);
59
49
 
60
- const objectLiteral = new AndComposite("object-literal", [
50
+ const objectLiteral = new And("object-literal", [
61
51
  openCurlyBracket,
62
52
  optionalSpaces,
63
53
  optionalKeyValues,
@@ -65,7 +55,7 @@ const objectLiteral = new AndComposite("object-literal", [
65
55
  closeCurlyBracket,
66
56
  ]);
67
57
 
68
- const json = new OrComposite("literals", [
58
+ const json = new Or("literals", [
69
59
  number,
70
60
  string,
71
61
  boolean,
@@ -75,5 +65,3 @@ const json = new OrComposite("literals", [
75
65
  ]);
76
66
 
77
67
  export default json;
78
-
79
-
@@ -1,22 +1,5 @@
1
- import RegexValue from "../../patterns/value/RegexValue";
1
+ import { Regex } from "../../index";
2
2
 
3
- // const letter = new AnyOfThese("letter", "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ");
4
- // const digit = new AnyOfThese("digit", "0987654321");
5
- // const underbar = new Literal("underbar", "_");
6
- // const character = new OrValue("character", [
7
- // letter,
8
- // digit,
9
- // underbar
10
- // ]);
3
+ const name = new Regex("name", "[a-zA-Z]+[a-zA-Z0-9_]*");
11
4
 
12
- // const characterSequence = new RepeatValue("character-sequence", character);
13
- // const optionalCharacter = new OptionalValue(characterSequence);
14
-
15
- // const name = new AndValue("name", [
16
- // letter,
17
- // optionalCharacter
18
- // ]);
19
-
20
- const name = new RegexValue("name", "[a-zA-Z]+[a-zA-Z0-9_]*");
21
-
22
- export default name;
5
+ export default name;
@@ -1,8 +1,8 @@
1
1
  import {
2
- RegexValue
2
+ Regex
3
3
  } from "../../index";
4
4
 
5
- const number = new RegexValue(
5
+ const number = new Regex(
6
6
  "number",
7
7
  "[-+]?[0-9]*[.]?[0-9]+([eE][-+]?[0-9]+)?"
8
8
  );
@@ -1,29 +1,22 @@
1
- import Literal from "../../patterns/value/Literal";
2
- import AndComposite from "../../patterns/composite/AndComposite";
3
- import RepeatComposite from "../../patterns/composite/RepeatComposite";
4
- import OptionalComposite from "../../patterns/composite/OptionalComposite";
5
- import OrValue from "../../patterns/value/OrValue";
6
- import OptionalValue from "../../patterns/value/OptionalValue";
7
- import RecursivePattern from "../../patterns/RecursivePattern";
1
+ import {Literal, And, Repeat, Or, Recursive} from "../../index";
8
2
  import name from "./name";
9
3
  import string from "./string";
10
4
  import whitespace from "./whitespace";
11
- import AndValue from "../../patterns/value/AndValue";
12
5
 
13
- const expression = new RecursivePattern("expression");
14
- const optionalWhitespace = new OptionalValue(whitespace);
6
+ const expression = new Recursive("expression");
7
+ const optionalWhitespace = whitespace.clone("optional-whitespaces", true);
15
8
  const comma = new Literal(",", ",");
16
9
  const colon = new Literal(":", ":");
17
10
 
18
- const separator = new AndValue("separator", [
11
+ const separator = new And("separator", [
19
12
  optionalWhitespace,
20
13
  comma,
21
14
  optionalWhitespace,
22
15
  ]);
23
16
 
24
- const property = new OrValue("property", [name, string]);
17
+ const property = new Or("property", [name, string]);
25
18
 
26
- const keyValue = new AndComposite("key-value", [
19
+ const keyValue = new And("key-value", [
27
20
  property,
28
21
  optionalWhitespace,
29
22
  colon,
@@ -31,12 +24,12 @@ const keyValue = new AndComposite("key-value", [
31
24
  expression,
32
25
  ]);
33
26
 
34
- const keyValues = new RepeatComposite("key-values", keyValue, separator);
35
- const optionalKeyValues = new OptionalComposite(keyValues);
27
+ const keyValues = new Repeat("key-values", keyValue, separator);
28
+ const optionalKeyValues = keyValues.clone("optional-key-values", true);
36
29
  const openBracket = new Literal("{", "}");
37
30
  const closeBracket = new Literal("}", "}");
38
31
 
39
- const objectLiteral = new AndComposite("object-literal", [
32
+ const objectLiteral = new And("object-literal", [
40
33
  openBracket,
41
34
  optionalWhitespace,
42
35
  optionalKeyValues,
@@ -1,30 +1,26 @@
1
- import Literal from "../../patterns/value/Literal";
2
- import NotValue from "../../patterns/value/NotValue";
3
- import OrValue from "../../patterns/value/OrValue";
4
- import RepeatValue from "../../patterns/value/RepeatValue";
5
- import AndValue from "../../patterns/value/AndValue";
1
+ import { Literal, Not, Or, Repeat, And, Regex } from "../../index";
6
2
 
7
3
  const singleQuote = new Literal("single-quote", "'");
8
4
  const doubleQuote = new Literal("double-quote", '"');
9
5
  const backslash = new Literal("double-quote", "\\");
10
6
 
11
- const singleQuoteOrBackslash = new OrValue("single-quote-or-backslash", [
7
+ const singleQuoteOrBackslash = new Or("single-quote-or-backslash", [
12
8
  singleQuote,
13
- backslash
9
+ backslash,
14
10
  ]);
15
11
 
16
- const doubleQuoteOrBackslash = new OrValue("single-quote-or-backslash", [
12
+ const doubleQuoteOrBackslash = new Or("single-quote-or-backslash", [
17
13
  doubleQuote,
18
- backslash
14
+ backslash,
19
15
  ]);
20
16
 
21
- const unescapedSingleCharacter = new NotValue(
17
+ const unescapedSingleCharacter = new Regex(
22
18
  "unescaped-single-character",
23
- singleQuoteOrBackslash
19
+ "[^'\\\\]"
24
20
  );
25
- const unescapedDoubleCharacter = new NotValue(
21
+ const unescapedDoubleCharacter = new Regex(
26
22
  "unescaped-double-character",
27
- doubleQuoteOrBackslash
23
+ `[^"\\\\]`
28
24
  );
29
25
  const escapedSingleQuote = new Literal("escaped-single-quote", "\\'");
30
26
  const escapedDoubleQuote = new Literal("escaped-double-quote", '\\"');
@@ -36,7 +32,7 @@ const escapedNewLine = new Literal("escaped-new-line", "\\n");
36
32
  const escapedCarriageReturn = new Literal("escaped-carriage-return", "\\r");
37
33
  const escapedTab = new Literal("escaped-tab", "\\t");
38
34
 
39
- const singleQuoteCharacter = new OrValue("character", [
35
+ const singleQuoteCharacter = new Or("character", [
40
36
  escapedSingleQuote,
41
37
  escapedDoubleQuote,
42
38
  escapedBackslash,
@@ -46,10 +42,10 @@ const singleQuoteCharacter = new OrValue("character", [
46
42
  escapedNewLine,
47
43
  escapedCarriageReturn,
48
44
  escapedTab,
49
- unescapedSingleCharacter
45
+ unescapedSingleCharacter,
50
46
  ]);
51
47
 
52
- const doubleQuoteCharacter = new OrValue("character", [
48
+ const doubleQuoteCharacter = new Or("character", [
53
49
  escapedSingleQuote,
54
50
  escapedDoubleQuote,
55
51
  escapedBackslash,
@@ -59,24 +55,30 @@ const doubleQuoteCharacter = new OrValue("character", [
59
55
  escapedNewLine,
60
56
  escapedCarriageReturn,
61
57
  escapedTab,
62
- unescapedDoubleCharacter
58
+ unescapedDoubleCharacter,
63
59
  ]);
64
60
 
65
- const singleCharacterSequence = new RepeatValue("string-content", singleQuoteCharacter);
66
- const doubleCharacterSequence = new RepeatValue("string-content", doubleQuoteCharacter);
61
+ const singleCharacterSequence = new Repeat(
62
+ "string-content",
63
+ singleQuoteCharacter
64
+ );
65
+ const doubleCharacterSequence = new Repeat(
66
+ "string-content",
67
+ doubleQuoteCharacter
68
+ );
67
69
 
68
- const singleQuoteString = new AndValue("single-quote-string", [
70
+ const singleQuoteString = new And("single-quote-string", [
69
71
  singleQuote,
70
72
  singleCharacterSequence,
71
- singleQuote
73
+ singleQuote,
72
74
  ]);
73
75
 
74
- const doubleQuoteString = new AndValue("double-quote-string", [
76
+ const doubleQuoteString = new And("double-quote-string", [
75
77
  doubleQuote,
76
78
  doubleCharacterSequence,
77
- doubleQuote
79
+ doubleQuote,
78
80
  ]);
79
81
 
80
- const string = new OrValue("string", [singleQuoteString, doubleQuoteString]);
82
+ const string = new Or("string", [singleQuoteString, doubleQuoteString]);
81
83
 
82
84
  export default string;
@@ -1,11 +1,8 @@
1
- import {
2
- AndComposite,
3
- RegexValue
4
- } from "../../index";
1
+ import { And, Regex } from "../../index";
5
2
 
6
3
  import number from "./number";
7
4
 
8
- const unitType = new RegexValue("unit-type","[a-zA-Z]+|%");
9
- const unit = new AndComposite("unit", [number, unitType]);
5
+ const unitType = new Regex("unit-type", "[a-zA-Z]+|%");
6
+ const unit = new And("unit", [number, unitType]);
10
7
 
11
8
  export default unit;