clarity-pattern-parser 3.0.15 → 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/LookAhead.ts +32 -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/Reference.ts +127 -0
  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 +44 -0
  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 +41 -141
  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 +20 -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 -24
  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 -153
  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 -69
  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/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,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;
@@ -1,4 +1,4 @@
1
- import { Literal, AndComposite, OrComposite } from "../../index";
1
+ import { Literal, And, Or } from "../../index";
2
2
 
3
3
  const pat = new Literal("pat", "Pat");
4
4
  const dan = new Literal("dan", "Dan");
@@ -16,13 +16,13 @@ const visited = new Literal("visited", "visited");
16
16
  const a = new Literal("a", "a");
17
17
  const the = new Literal("the", "the");
18
18
 
19
- const noun = new OrComposite("noun", [pat, dan]);
20
- const location = new OrComposite("location", [store, bank]);
21
- const verb = new OrComposite("verb", [wentTo, visited]);
22
- const adjective = new OrComposite("adjective", [big, small]);
23
- const article = new OrComposite("article", [a, the]);
19
+ const noun = new Or("noun", [pat, dan]);
20
+ const location = new Or("location", [store, bank]);
21
+ const verb = new Or("verb", [wentTo, visited]);
22
+ const adjective = new Or("adjective", [big, small]);
23
+ const article = new Or("article", [a, the]);
24
24
 
25
- const sentence = new AndComposite("sentence", [
25
+ const sentence = new And("sentence", [
26
26
  noun,
27
27
  space,
28
28
  verb,
@@ -31,7 +31,7 @@ const sentence = new AndComposite("sentence", [
31
31
  space,
32
32
  adjective,
33
33
  space,
34
- location
34
+ location,
35
35
  ]);
36
36
 
37
37
  export default sentence;
package/dist/Cursor.js DELETED
@@ -1,105 +0,0 @@
1
- import CursorHistory from "./CursorHistory";
2
- export default class Cursor {
3
- constructor(text) {
4
- this.text = text;
5
- this.assertValidity();
6
- this.index = 0;
7
- this.length = text.length;
8
- this.history = new CursorHistory();
9
- this.isInErrorState = false;
10
- }
11
- assertValidity() {
12
- if (this.isNullOrEmpty(this.text)) {
13
- throw new Error("Illegal Argument: Cursor needs to have a string that has a length greater than 0.");
14
- }
15
- }
16
- startRecording() {
17
- this.history.startRecording();
18
- }
19
- stopRecording() {
20
- this.history.stopRecording();
21
- }
22
- get parseError() {
23
- return this.history.getFurthestError();
24
- }
25
- get lastMatch() {
26
- return this.history.getFurthestMatch();
27
- }
28
- throwError(parseError) {
29
- this.isInErrorState = true;
30
- this.history.addError(parseError);
31
- }
32
- addMatch(pattern, astNode) {
33
- this.history.addMatch(pattern, astNode);
34
- }
35
- resolveError() {
36
- this.isInErrorState = false;
37
- }
38
- hasUnresolvedError() {
39
- return this.isInErrorState;
40
- }
41
- isNullOrEmpty(value) {
42
- return value == null || (typeof value === "string" && value.length === 0);
43
- }
44
- hasNext() {
45
- return this.index + 1 < this.text.length;
46
- }
47
- hasPrevious() {
48
- return this.index - 1 >= 0;
49
- }
50
- next() {
51
- if (this.hasNext()) {
52
- this.index++;
53
- }
54
- else {
55
- throw new Error("Cursor: Out of Bounds Exception.");
56
- }
57
- }
58
- previous() {
59
- if (this.hasPrevious()) {
60
- this.index--;
61
- }
62
- else {
63
- throw new Error("Cursor: Out of Bounds Exception.");
64
- }
65
- }
66
- mark() {
67
- return this.index;
68
- }
69
- moveToMark(mark) {
70
- this.index = mark;
71
- }
72
- moveToBeginning() {
73
- this.index = 0;
74
- }
75
- moveToEnd() {
76
- this.index = this.text.length - 1;
77
- }
78
- getChar() {
79
- return this.text.charAt(this.index);
80
- }
81
- getIndex() {
82
- return this.index;
83
- }
84
- setIndex(index) {
85
- if (typeof index === "number") {
86
- if (index < 0 || index > this.lastIndex()) {
87
- throw new Error("Cursor: Out of Bounds Exception.");
88
- }
89
- this.index = index;
90
- }
91
- }
92
- isAtBeginning() {
93
- return this.index === 0;
94
- }
95
- isAtEnd() {
96
- return this.index === this.text.length - 1;
97
- }
98
- lastIndex() {
99
- return this.length - 1;
100
- }
101
- didSuccessfullyParse() {
102
- return !this.hasUnresolvedError() && this.isAtEnd();
103
- }
104
- }
105
- //# sourceMappingURL=Cursor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Cursor.js","sourceRoot":"","sources":["../src/Cursor.ts"],"names":[],"mappings":"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"}
@@ -1,104 +0,0 @@
1
- export default class CursorHistory {
2
- constructor() {
3
- this.isRecording = false;
4
- this.furthestMatch = {
5
- pattern: null,
6
- astNode: null,
7
- };
8
- this.furthestError = null;
9
- this.patterns = [];
10
- this.astNodes = [];
11
- this.errors = [];
12
- }
13
- addMatch(pattern, astNode) {
14
- if (this.isRecording) {
15
- this.patterns.push(pattern);
16
- this.astNodes.push(astNode);
17
- }
18
- if (this.furthestMatch.astNode == null ||
19
- astNode.endIndex >= this.furthestMatch.astNode.endIndex) {
20
- this.furthestMatch.pattern = pattern;
21
- this.furthestMatch.astNode = astNode;
22
- }
23
- }
24
- addError(error) {
25
- if (this.isRecording) {
26
- this.errors.push(error);
27
- }
28
- if (this.furthestError == null || error.index >= this.furthestError.index) {
29
- this.furthestError = error;
30
- }
31
- }
32
- startRecording() {
33
- this.isRecording = true;
34
- }
35
- stopRecording() {
36
- this.isRecording = false;
37
- this.clear();
38
- }
39
- clear() {
40
- this.patterns.length = 0;
41
- this.astNodes.length = 0;
42
- this.errors.length = 0;
43
- }
44
- getFurthestError() {
45
- return this.furthestError;
46
- }
47
- getFurthestMatch() {
48
- return this.furthestMatch;
49
- }
50
- getLastMatch() {
51
- if (this.isRecording) {
52
- return {
53
- pattern: this.patterns[this.patterns.length - 1] || null,
54
- astNode: this.astNodes[this.astNodes.length - 1] || null,
55
- };
56
- }
57
- else {
58
- return this.furthestMatch;
59
- }
60
- }
61
- getLastError() {
62
- return this.errors[this.errors.length - 1] || null;
63
- }
64
- getAllParseStacks() {
65
- const stacks = this.astNodes.reduce((acc, node) => {
66
- let container = acc[acc.length - 1];
67
- if (node.startIndex === 0) {
68
- container = [];
69
- acc.push(container);
70
- }
71
- container.push(node);
72
- return acc;
73
- }, []);
74
- // There are times when the matching will fail and hit again on the same node.
75
- // This filters them out.
76
- // We simply check to see if there is any overlap with the previous one,
77
- // and if there is we don't add it. This is why we move backwards.
78
- const cleanedStack = stacks.map((stack) => {
79
- const cleanedStack = [];
80
- for (let x = stack.length - 1; x >= 0; x--) {
81
- const currentNode = stack[x];
82
- const previousNode = stack[x + 1];
83
- if (previousNode == null) {
84
- cleanedStack.unshift(currentNode);
85
- }
86
- else {
87
- const left = Math.max(currentNode.startIndex, previousNode.startIndex);
88
- const right = Math.min(currentNode.endIndex, previousNode.endIndex);
89
- const isOverlapping = left <= right;
90
- if (!isOverlapping) {
91
- cleanedStack.unshift(currentNode);
92
- }
93
- }
94
- }
95
- return cleanedStack;
96
- });
97
- return cleanedStack;
98
- }
99
- getLastParseStack() {
100
- const stacks = this.getAllParseStacks();
101
- return stacks[stacks.length - 1] || [];
102
- }
103
- }
104
- //# sourceMappingURL=CursorHistory.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CursorHistory.js","sourceRoot":"","sources":["../src/CursorHistory.ts"],"names":[],"mappings":"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"}
@@ -1,13 +0,0 @@
1
- export default class Permutor {
2
- array: Array<Array<string>>;
3
- positionToOptions: {
4
- [key: string]: string[];
5
- };
6
- constructor();
7
- permute(array: any): any;
8
- getPermutations(): any;
9
- getKey(x: number, y: number): string;
10
- createPositionMap(): void;
11
- getOptions(x: number, y: number): string[];
12
- setOptions(x: number, y: number, value: string[]): void;
13
- }
package/dist/Permutor.js DELETED
@@ -1,52 +0,0 @@
1
- export default class Permutor {
2
- constructor() {
3
- this.array = [];
4
- this.positionToOptions = {};
5
- }
6
- permute(array) {
7
- this.array = array;
8
- this.createPositionMap();
9
- return this.getPermutations();
10
- }
11
- getPermutations() {
12
- return this.array[0].reduce((acc, value, index) => {
13
- return acc.concat(this.getOptions(0, index));
14
- }, []);
15
- }
16
- getKey(x, y) {
17
- return `${x}|${y}`;
18
- }
19
- createPositionMap() {
20
- this.positionToOptions = {};
21
- for (let x = this.array.length - 1; x >= 0; x--) {
22
- for (let y = 0; y < this.array[x].length; y++) {
23
- const yValue = this.array[x][y];
24
- const nextX = x + 1;
25
- if (this.array[nextX] != null) {
26
- const options = this.array[nextX];
27
- const value = options
28
- .map((option, index) => {
29
- let permutations = this.getOptions(nextX, index);
30
- return permutations.map((option) => {
31
- return `${yValue}${option}`;
32
- });
33
- })
34
- .reduce((acc, value) => {
35
- return acc.concat(value);
36
- }, []);
37
- this.setOptions(x, y, value);
38
- }
39
- else {
40
- this.setOptions(x, y, [yValue]);
41
- }
42
- }
43
- }
44
- }
45
- getOptions(x, y) {
46
- return this.positionToOptions[this.getKey(x, y)];
47
- }
48
- setOptions(x, y, value) {
49
- this.positionToOptions[this.getKey(x, y)] = value;
50
- }
51
- }
52
- //# sourceMappingURL=Permutor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Permutor.js","sourceRoot":"","sources":["../src/Permutor.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,OAAO,QAAQ;IAI3B;QACE,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;IAC9B,CAAC;IAED,OAAO,CAAC,KAAU;QAChB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC;IAChC,CAAC;IAED,eAAe;QACb,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YACrD,OAAO,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;QAC/C,CAAC,EAAE,EAAE,CAAC,CAAC;IACT,CAAC;IAED,MAAM,CAAC,CAAS,EAAE,CAAS;QACzB,OAAO,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;IACrB,CAAC;IAED,iBAAiB;QACf,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;QAE5B,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;YAC/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAChC,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;gBAEpB,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE;oBAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBAElC,MAAM,KAAK,GAAG,OAAO;yBAClB,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;wBACrB,IAAI,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;wBAEjD,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;4BACjC,OAAO,GAAG,MAAM,GAAG,MAAM,EAAE,CAAC;wBAC9B,CAAC,CAAC,CAAC;oBACL,CAAC,CAAC;yBACD,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;wBACrB,OAAO,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBAC3B,CAAC,EAAE,EAAE,CAAC,CAAC;oBAET,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;iBAC9B;qBAAM;oBACL,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;iBACjC;aACF;SACF;IACH,CAAC;IAED,UAAU,CAAC,CAAS,EAAE,CAAS;QAC7B,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACnD,CAAC;IAED,UAAU,CAAC,CAAS,EAAE,CAAS,EAAE,KAAe;QAC9C,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;IACpD,CAAC;CACF"}