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,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;
@@ -1,9 +1,5 @@
1
- import OrComposite from "../../patterns/composite/OrComposite";
2
- import Literal from "../../patterns/value/Literal";
3
- import NotValue from "../../patterns/value/NotValue";
4
- import OrValue from "../../patterns/value/OrValue";
5
- import RepeatValue from "../../patterns/value/RepeatValue";
6
- import AndValue from "../../patterns/value/AndValue";
1
+ import { Literal, Or, Repeat, And, Regex} from "../../index";
2
+
7
3
 
8
4
  const space = new Literal("space", " ");
9
5
  const tab = new Literal("tab", "\t");
@@ -14,28 +10,28 @@ const doubleForwardSlash = new Literal("double-forward-slash", "//");
14
10
  const slashStar = new Literal("slash-star", "/*");
15
11
  const starSlash = new Literal("star-slash", "*/");
16
12
 
17
- const lineEnd = new OrValue("lineEnd", [
13
+ const lineEnd = new Or("lineEnd", [
18
14
  windowsReturn,
19
15
  newLine,
20
16
  carriageReturn
21
17
  ]);
22
18
 
23
- const lineCommentContent = new RepeatValue("line-comment-content", new NotValue("not-line-end", lineEnd));
24
- const blockCommentContent = new RepeatValue("block-comment-content", new NotValue("not-start-slash", starSlash));
19
+ const lineCommentContent = new Repeat("line-comment-content", new Regex("not-line-end", "[^\r][^\n]|[^\n]"));
20
+ const blockCommentContent = new Repeat("block-comment-content", new Regex("not-start-slash", "[^*][^/]"));
25
21
 
26
- const lineComment = new AndValue("line-comment", [
22
+ const lineComment = new And("line-comment", [
27
23
  doubleForwardSlash,
28
24
  lineCommentContent,
29
25
  lineEnd
30
26
  ]);
31
27
 
32
- const blockComment = new AndValue("block-comment", [
28
+ const blockComment = new And("block-comment", [
33
29
  slashStar,
34
30
  blockCommentContent,
35
31
  starSlash
36
32
  ]);
37
33
 
38
- const whitespace = new OrComposite("whitespace", [
34
+ const whitespace = new Or("whitespace", [
39
35
  space,
40
36
  tab,
41
37
  lineComment,
@@ -1,10 +1,7 @@
1
- import Literal from "../../patterns/value/Literal";
1
+ import { Literal, Or, And } from "../../index";
2
2
  import name from "../javascriptPatterns/name";
3
3
  import number from "../javascriptPatterns/number";
4
4
  import string from "../javascriptPatterns/string";
5
- import OrComposite from "../../patterns/composite/OrComposite";
6
- import AndComposite from "../../patterns/composite/AndComposite";
7
-
8
5
 
9
6
  const space = new Literal("space", " ");
10
7
  const equalTo = new Literal("=", "is");
@@ -17,38 +14,24 @@ const startsWith = new Literal("starts-with", "starts with");
17
14
  const endsWith = new Literal("ends-with", "ends with");
18
15
  const contains = new Literal("contains", "has");
19
16
 
20
- const value = new OrComposite("value", [
21
- number,
22
- string,
23
- name
17
+ const value = new Or("value", [number, string, name]);
18
+
19
+ const operator = new Or("operator", [
20
+ equalTo,
21
+ notEqualTo,
22
+ isGreaterThan,
23
+ isLessThan,
24
+ isGreaterThanOrEqualTo,
25
+ isLessThanOrEqualTo,
26
+ startsWith,
27
+ endsWith,
28
+ contains,
24
29
  ]);
25
30
 
26
- const operator = new OrComposite("operator", [
27
- equalTo,
28
- notEqualTo,
29
- isGreaterThan,
30
- isLessThan,
31
- isGreaterThanOrEqualTo,
32
- isLessThanOrEqualTo,
33
- startsWith,
34
- endsWith,
35
- contains
36
- ]);
37
-
38
- const predicate = new AndComposite("predicate", [
39
- name,
40
- space,
41
- operator,
42
- space,
43
- value
44
- ]);
31
+ const predicate = new And("predicate", [name, space, operator, space, value]);
45
32
 
46
33
  const match = new Literal("match", "Match records where");
47
34
 
48
- const filter = new AndComposite("filter", [
49
- match,
50
- space,
51
- predicate
52
- ]);
35
+ const filter = new And("filter", [match, space, predicate]);
53
36
 
54
- export default filter;
37
+ export default filter;