occam-verify-cli 0.0.471 → 0.0.473

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 (40) hide show
  1. package/bin/utilities/fileSystem.js +1 -35
  2. package/lib/constants.js +4 -8
  3. package/lib/context/metaproof.js +9 -2
  4. package/lib/context/proof.js +9 -2
  5. package/lib/equality.js +22 -0
  6. package/lib/metaSubstitution.js +12 -52
  7. package/lib/step/metaproof.js +7 -7
  8. package/lib/substitution.js +16 -56
  9. package/lib/utilities/node.js +57 -4
  10. package/lib/utilities/releaseContext.js +22 -2
  11. package/lib/verify/derivation.js +4 -6
  12. package/lib/verify/metaDerivation.js +4 -6
  13. package/lib/verify/metaproof.js +3 -6
  14. package/lib/verify/metastatement/qualified.js +1 -7
  15. package/lib/verify/metastatement/unqualified.js +1 -7
  16. package/lib/verify/proof.js +3 -6
  17. package/lib/verify/statement/qualified.js +1 -7
  18. package/lib/verify/statement/unqualified.js +1 -7
  19. package/package.json +1 -1
  20. package/src/constants.js +1 -2
  21. package/src/context/metaproof.js +5 -1
  22. package/src/context/proof.js +5 -1
  23. package/src/equality.js +8 -0
  24. package/src/metaSubstitution.js +16 -87
  25. package/src/step/metaproof.js +13 -14
  26. package/src/substitution.js +19 -90
  27. package/src/utilities/node.js +78 -1
  28. package/src/utilities/releaseContext.js +41 -2
  29. package/src/verify/derivation.js +3 -8
  30. package/src/verify/metaDerivation.js +3 -8
  31. package/src/verify/metaproof.js +2 -8
  32. package/src/verify/metastatement/qualified.js +0 -9
  33. package/src/verify/metastatement/unqualified.js +0 -9
  34. package/src/verify/proof.js +2 -8
  35. package/src/verify/statement/qualified.js +0 -9
  36. package/src/verify/statement/unqualified.js +0 -9
  37. package/lib/utilities/metaAssertion.js +0 -117
  38. package/lib/utilities/statement.js +0 -45
  39. package/src/utilities/metaAssertion.js +0 -176
  40. package/src/utilities/statement.js +0 -50
@@ -27,17 +27,11 @@ export default function verifyMetaproof(metaproofNode, conclusion, metaproofCont
27
27
  }
28
28
 
29
29
  if (qualifiedMetastatementNode !== null) {
30
- let derived;
31
-
32
- derived = true;
33
-
34
- metaproofContext.setDerived(derived);
30
+ metaproofContext.setDerived();
35
31
 
36
32
  qualifiedMetastatementVerified = verifyQualifiedMetastatement(qualifiedMetastatementNode, metaproofContext);
37
33
 
38
- derived = false;
39
-
40
- metaproofContext.setDerived(derived);
34
+ metaproofContext.resetDerived();
41
35
 
42
36
  if (qualifiedMetastatementVerified) {
43
37
  const metastatementNode = metastatementNodeQuery(qualifiedMetastatementNode),
@@ -1,6 +1,5 @@
1
1
  "use strict";
2
2
 
3
- import { nodeAsString } from "../../utilities/string";
4
3
  import { nodeQuery, referenceNameFromReferenceNode } from "../../utilities/query";
5
4
 
6
5
  const referenceNodeQuery = nodeQuery("/qualifiedMetastatement/qualification!/reference!"),
@@ -11,10 +10,6 @@ export default function verifyQualifiedMetastatement(qualifiedMetastatementNode,
11
10
 
12
11
  metaproofContext.begin(qualifiedMetastatementNode);
13
12
 
14
- const qualifiedMetastatementString = nodeAsString(qualifiedMetastatementNode);
15
-
16
- metaproofContext.debug(`Verifying the '${qualifiedMetastatementString}' qualified metastatement...`);
17
-
18
13
  const metastatementNode = metastatementNodeQuery(qualifiedMetastatementNode);
19
14
 
20
15
  if (metastatementNode !== null) {
@@ -29,10 +24,6 @@ export default function verifyQualifiedMetastatement(qualifiedMetastatementNode,
29
24
  }
30
25
  }
31
26
 
32
- if (qualifiedMetastatementVerified) {
33
- metaproofContext.info(`Verified the '${qualifiedMetastatementString}' qualified metastatement.`);
34
- }
35
-
36
27
  qualifiedMetastatementVerified ?
37
28
  metaproofContext.complete(qualifiedMetastatementNode) :
38
29
  metaproofContext.halt(qualifiedMetastatementNode);
@@ -3,7 +3,6 @@
3
3
  import verifyMetastatement from "../../verify/metastatement";
4
4
 
5
5
  import { nodeQuery } from "../../utilities/query";
6
- import { nodeAsString } from "../../utilities/string";
7
6
 
8
7
  const metastatementNodeQuery = nodeQuery("/unqualifiedMetastatement/metastatement!");
9
8
 
@@ -12,10 +11,6 @@ export default function verifyUnqualifiedMetastatement(unqualifiedMetastatementN
12
11
 
13
12
  metaproofContext.begin(unqualifiedMetastatementNode);
14
13
 
15
- const unqualifiedMetastatementString = nodeAsString(unqualifiedMetastatementNode);
16
-
17
- metaproofContext.debug(`Verifying the '${unqualifiedMetastatementString}' unqualified metastatement...`);
18
-
19
14
  const metastatementNode = metastatementNodeQuery(unqualifiedMetastatementNode);
20
15
 
21
16
  if (metastatementNode !== null) {
@@ -34,10 +29,6 @@ export default function verifyUnqualifiedMetastatement(unqualifiedMetastatementN
34
29
  }
35
30
  }
36
31
 
37
- if (unqualifiedMetastatementVerified) {
38
- metaproofContext.info(`Verified the '${unqualifiedMetastatementString}' unqualified metastatement.`);
39
- }
40
-
41
32
  unqualifiedMetastatementVerified ?
42
33
  metaproofContext.complete(unqualifiedMetastatementNode) :
43
34
  metaproofContext.halt(unqualifiedMetastatementNode);
@@ -27,17 +27,11 @@ export default function verifyProof(proofNode, conclusion, proofContext) {
27
27
  }
28
28
 
29
29
  if (qualifiedStatementNode !== null) {
30
- let derived;
31
-
32
- derived = true;
33
-
34
- proofContext.setDerived(derived);
30
+ proofContext.setDerived();
35
31
 
36
32
  qualifiedStatementVerified = verifyQualifiedStatement(qualifiedStatementNode, proofContext);
37
33
 
38
- derived = false;
39
-
40
- proofContext.setDerived(derived);
34
+ proofContext.resetDerived();
41
35
 
42
36
  if (qualifiedStatementVerified) {
43
37
  const statementNode = statementNodeQuery(qualifiedStatementNode),
@@ -2,7 +2,6 @@
2
2
 
3
3
  import verifyStatement from "../../verify/statement";
4
4
 
5
- import { nodeAsString } from "../../utilities/string";
6
5
  import { nodeQuery, referenceNameFromReferenceNode } from "../../utilities/query";
7
6
 
8
7
  const statementNodeQuery = nodeQuery("/qualifiedStatement/statement!"),
@@ -13,10 +12,6 @@ export default function verifyQualifiedStatement(qualifiedStatementNode, proofCo
13
12
 
14
13
  proofContext.begin(qualifiedStatementNode);
15
14
 
16
- const qualifiedStatementString = nodeAsString(qualifiedStatementNode);
17
-
18
- proofContext.debug(`Verifying the '${qualifiedStatementString}' qualified statement...`);
19
-
20
15
  const statementNode = statementNodeQuery(qualifiedStatementNode);
21
16
 
22
17
  if (statementNode !== null) {
@@ -33,10 +28,6 @@ export default function verifyQualifiedStatement(qualifiedStatementNode, proofCo
33
28
  }
34
29
  }
35
30
 
36
- if (qualifiedStatementVerified) {
37
- proofContext.info(`Verified the '${qualifiedStatementString}' qualified statement.`);
38
- }
39
-
40
31
  qualifiedStatementVerified ?
41
32
  proofContext.complete(qualifiedStatementNode) :
42
33
  proofContext.halt(qualifiedStatementNode);
@@ -3,7 +3,6 @@
3
3
  import verifyStatement from "../../verify/statement";
4
4
 
5
5
  import { nodeQuery } from "../../utilities/query";
6
- import { nodeAsString } from "../../utilities/string";
7
6
 
8
7
  const statementNodeQuery = nodeQuery("/unqualifiedStatement/statement!");
9
8
 
@@ -12,10 +11,6 @@ export default function verifyUnqualifiedStatement(unqualifiedStatementNode, pro
12
11
 
13
12
  proofContext.begin(unqualifiedStatementNode);
14
13
 
15
- const unqualifiedStatementString = nodeAsString(unqualifiedStatementNode);
16
-
17
- proofContext.debug(`Verifying the '${unqualifiedStatementString}' unqualified statement...`);
18
-
19
14
  const statementNode = statementNodeQuery(unqualifiedStatementNode);
20
15
 
21
16
  if (statementNode !== null) {
@@ -34,10 +29,6 @@ export default function verifyUnqualifiedStatement(unqualifiedStatementNode, pro
34
29
  }
35
30
  }
36
31
 
37
- if (unqualifiedStatementVerified) {
38
- proofContext.info(`Verified the '${unqualifiedStatementString}' unqualified statement.`);
39
- }
40
-
41
32
  unqualifiedStatementVerified ?
42
33
  proofContext.complete(unqualifiedStatementNode) :
43
34
  proofContext.halt(unqualifiedStatementNode);
@@ -1,117 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- function _export(target, all) {
6
- for(var name in all)Object.defineProperty(target, name, {
7
- enumerable: true,
8
- get: all[name]
9
- });
10
- }
11
- _export(exports, {
12
- matchBracketedMetastatementChildNode: function() {
13
- return matchBracketedMetastatementChildNode;
14
- },
15
- matchTopmostMetaAssertionMetastatementNode: function() {
16
- return matchTopmostMetaAssertionMetastatementNode;
17
- },
18
- bracketedMetastatementChildNodeFromChildNodes: function() {
19
- return bracketedMetastatementChildNodeFromChildNodes;
20
- }
21
- });
22
- var _array = require("../utilities/array");
23
- var _ruleNames = require("../ruleNames");
24
- var _constants = require("../constants");
25
- function matchBracketedMetastatementChildNode(childNodes, callback) {
26
- var bracketedMetastatementChildNodeMatches = false;
27
- var bracketedMetastatementChildNode = bracketedMetastatementChildNodeFromChildNodes(childNodes);
28
- if (bracketedMetastatementChildNode !== null) {
29
- bracketedMetastatementChildNodeMatches = callback(bracketedMetastatementChildNode);
30
- }
31
- return bracketedMetastatementChildNodeMatches;
32
- }
33
- function matchTopmostMetaAssertionMetastatementNode(topmostMetaAssertionMetastatementNode, topmostMetastatementNode) {
34
- var metaAssertionMetastatementNodeMatches;
35
- var metastatementNode = topmostMetastatementNode, metaAssertionMetastatementNode = topmostMetaAssertionMetastatementNode; ///
36
- metaAssertionMetastatementNodeMatches = matchMetaAssertionMetastatementNode(metaAssertionMetastatementNode, metastatementNode);
37
- if (!metaAssertionMetastatementNodeMatches) {
38
- var nonTerminalNode = metastatementNode, childNodes = nonTerminalNode, bracketedMetastatementChildNodeMatches = matchBracketedMetastatementChildNode(childNodes, function(bracketedMetastatementChildNode) {
39
- var metastatementNode = bracketedMetastatementChildNode, metaAssertionMetastatementNodeMatches = matchMetaAssertionMetastatementNode(metaAssertionMetastatementNode, metastatementNode), bracketedMetastatementChildNodeMatches = metaAssertionMetastatementNodeMatches;
40
- return bracketedMetastatementChildNodeMatches;
41
- });
42
- metaAssertionMetastatementNodeMatches = bracketedMetastatementChildNodeMatches; ///
43
- }
44
- if (!metaAssertionMetastatementNodeMatches) {
45
- var metaAssertionNonTerminalNode = metaAssertionMetastatementNode, metaAssertionChildNodes = metaAssertionNonTerminalNode.getChildNodes(), bracketedMetaAssertionMetastatementChildNodeMatches = matchBracketedMetastatementChildNode(metaAssertionChildNodes, function(bracketedMetaAssertionMetastatementChildNode) {
46
- var metaAssertionMetastatementNode = bracketedMetaAssertionMetastatementChildNode, metaAssertionMetastatementNodeMatches = matchMetaAssertionMetastatementNode(metaAssertionMetastatementNode, metastatementNode), bracketedMetaAssertionMetastatementChildNodeMatches = metaAssertionMetastatementNodeMatches;
47
- return bracketedMetaAssertionMetastatementChildNodeMatches;
48
- });
49
- metaAssertionMetastatementNodeMatches = bracketedMetaAssertionMetastatementChildNodeMatches; ///
50
- }
51
- var topmostMetaAssertionMetastatementNodeMatches = metaAssertionMetastatementNodeMatches; ///
52
- return topmostMetaAssertionMetastatementNodeMatches;
53
- }
54
- function bracketedMetastatementChildNodeFromChildNodes(childNodes) {
55
- var bracketedMetastatementChildNode = null;
56
- var childNodesLength = childNodes.length;
57
- if (childNodesLength === _constants.BRACKETED_METASTATEMENT_CHILD_NODES_LENGTH) {
58
- var firstChildNode = (0, _array.first)(childNodes), thirdChildNode = (0, _array.third)(childNodes), secondChildNode = (0, _array.second)(childNodes), firstChildNodeTerminalNode = firstChildNode.isTerminalNode(), thirdChildNodeTerminalNode = thirdChildNode.isTerminalNode(), secondChildNodeNonTerminalNode = secondChildNode.isNonTerminalNode();
59
- if (firstChildNodeTerminalNode && secondChildNodeNonTerminalNode && thirdChildNodeTerminalNode) {
60
- var nonTerminalNode = secondChildNode, firstTerminalNode = firstChildNode, secondTerminalNode = thirdChildNode, nonTerminalNodeRuleName = nonTerminalNode.getRuleName(), firstTerminalNodeContent = firstTerminalNode.getContent(), secondTerminalNodeContent = secondTerminalNode.getContent(), firstTerminalNodeContentLeftBracket = firstTerminalNodeContent === _constants.LEFT_BRACKET, secondTerminalNodeContentRightBracket = secondTerminalNodeContent === _constants.RIGHT_BRACKET, nonTerminalNodeRuleNameMetastatementRuleName = nonTerminalNodeRuleName === _ruleNames.METASTATEMENT_RULE_NAME;
61
- if (firstTerminalNodeContentLeftBracket && nonTerminalNodeRuleNameMetastatementRuleName && secondTerminalNodeContentRightBracket) {
62
- bracketedMetastatementChildNode = nonTerminalNode; ///
63
- }
64
- }
65
- }
66
- return bracketedMetastatementChildNode;
67
- }
68
- function matchMetaAssertionNode(metaAssertionNode, node) {
69
- var metaAssertionNodeMatches = false;
70
- var nodeTerminalNode = node.isTerminalNode(), ruleNodeTerminalNode = metaAssertionNode.isTerminalNode();
71
- if (nodeTerminalNode === ruleNodeTerminalNode) {
72
- if (nodeTerminalNode) {
73
- var terminalNode = node, metaAssertionTerminalNode = metaAssertionNode, metaAssertionTerminalNodeMatches = matchMetaAssertionTerminalNode(metaAssertionTerminalNode, terminalNode);
74
- metaAssertionNodeMatches = metaAssertionTerminalNodeMatches; ///
75
- } else {
76
- var nonTerminalNode = node, metaAssertionNonTerminalNode = metaAssertionNode, metaAssertionNonTerminalNodeMatches = matchMetaAssertionNonTerminalNode(metaAssertionNonTerminalNode, nonTerminalNode);
77
- metaAssertionNodeMatches = metaAssertionNonTerminalNodeMatches; ///
78
- }
79
- }
80
- return metaAssertionNodeMatches;
81
- }
82
- function matchMetaAssertionNodes(metaAssertionNodes, nodes) {
83
- var metaAssertionNodesMatches = false;
84
- var nodesLength = nodes.length, metaAssertionNodesLength = metaAssertionNodes.length;
85
- if (nodesLength === metaAssertionNodesLength) {
86
- metaAssertionNodesMatches = nodes.every(function(node, index) {
87
- var metaAssertionNode = metaAssertionNodes[index], metaAssertionNodeMatches = matchMetaAssertionNode(metaAssertionNode, node);
88
- if (metaAssertionNodeMatches) {
89
- return true;
90
- }
91
- });
92
- }
93
- return metaAssertionNodesMatches;
94
- }
95
- function matchMetaAssertionTerminalNode(metaAssertionTerminalNode, terminalNode) {
96
- var metaAssertionTerminalNodeMatches = false;
97
- var matches = metaAssertionTerminalNode.match(terminalNode);
98
- if (matches) {
99
- metaAssertionTerminalNodeMatches = true;
100
- }
101
- return metaAssertionTerminalNodeMatches;
102
- }
103
- function matchMetaAssertionNonTerminalNode(metaAssertionNonTerminalNode, nonTerminalNode) {
104
- var metaAssertionNonTerminalNodeMatches = false;
105
- var ruleName = nonTerminalNode.getRuleName(), metaAssertionRuleName = metaAssertionNonTerminalNode.getRuleName(); ///
106
- if (ruleName === metaAssertionRuleName) {
107
- var childNodes = nonTerminalNode.getChildNodes(), nodes = childNodes, metaAssertionChildNodes = metaAssertionNonTerminalNode.getChildNodes(), metaAssertionNodes = metaAssertionChildNodes, metaAssertionNodesMatches = matchMetaAssertionNodes(metaAssertionNodes, nodes);
108
- metaAssertionNonTerminalNodeMatches = metaAssertionNodesMatches; ///
109
- }
110
- return metaAssertionNonTerminalNodeMatches;
111
- }
112
- function matchMetaAssertionMetastatementNode(metaAssertionMetastatementNode, metastatementNode) {
113
- var nonTerminalNode = metastatementNode, metaAssertionNonTerminalNode = metaAssertionMetastatementNode, metaAssertionNonTerminalNodeMatches = matchMetaAssertionNonTerminalNode(metaAssertionNonTerminalNode, nonTerminalNode), metaAssertionMetastatementNodeNatches = metaAssertionNonTerminalNodeMatches; ///
114
- return metaAssertionMetastatementNodeNatches;
115
- }
116
-
117
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvbWV0YUFzc2VydGlvbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgZmlyc3QsIHNlY29uZCwgdGhpcmQgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2FycmF5XCI7XG5pbXBvcnQgeyBNRVRBU1RBVEVNRU5UX1JVTEVfTkFNRSB9IGZyb20gXCIuLi9ydWxlTmFtZXNcIjtcbmltcG9ydCB7IExFRlRfQlJBQ0tFVCwgUklHSFRfQlJBQ0tFVCwgQlJBQ0tFVEVEX01FVEFTVEFURU1FTlRfQ0hJTERfTk9ERVNfTEVOR1RIIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gbWF0Y2hCcmFja2V0ZWRNZXRhc3RhdGVtZW50Q2hpbGROb2RlKGNoaWxkTm9kZXMsIGNhbGxiYWNrKSB7XG4gIGxldCBicmFja2V0ZWRNZXRhc3RhdGVtZW50Q2hpbGROb2RlTWF0Y2hlcyA9IGZhbHNlO1xuXG4gIGNvbnN0IGJyYWNrZXRlZE1ldGFzdGF0ZW1lbnRDaGlsZE5vZGUgPSBicmFja2V0ZWRNZXRhc3RhdGVtZW50Q2hpbGROb2RlRnJvbUNoaWxkTm9kZXMoY2hpbGROb2Rlcyk7XG5cbiAgaWYgKGJyYWNrZXRlZE1ldGFzdGF0ZW1lbnRDaGlsZE5vZGUgIT09IG51bGwpIHtcbiAgICBicmFja2V0ZWRNZXRhc3RhdGVtZW50Q2hpbGROb2RlTWF0Y2hlcyA9IGNhbGxiYWNrKGJyYWNrZXRlZE1ldGFzdGF0ZW1lbnRDaGlsZE5vZGUpO1xuICB9XG5cbiAgcmV0dXJuIGJyYWNrZXRlZE1ldGFzdGF0ZW1lbnRDaGlsZE5vZGVNYXRjaGVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWF0Y2hUb3Btb3N0TWV0YUFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlKHRvcG1vc3RNZXRhQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGUsIHRvcG1vc3RNZXRhc3RhdGVtZW50Tm9kZSkge1xuICBsZXQgbWV0YUFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlTWF0Y2hlcztcblxuICBjb25zdCBtZXRhc3RhdGVtZW50Tm9kZSA9IHRvcG1vc3RNZXRhc3RhdGVtZW50Tm9kZSwgLy8vXG4gICAgICAgIG1ldGFBc3NlcnRpb25NZXRhc3RhdGVtZW50Tm9kZSA9IHRvcG1vc3RNZXRhQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGU7ICAvLy9cblxuICBtZXRhQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGVNYXRjaGVzID0gbWF0Y2hNZXRhQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGUobWV0YUFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlLCBtZXRhc3RhdGVtZW50Tm9kZSk7XG5cbiAgaWYgKCFtZXRhQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGVNYXRjaGVzKSB7XG4gICAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gbWV0YXN0YXRlbWVudE5vZGUsICAvLy9cbiAgICAgICAgICBjaGlsZE5vZGVzID0gbm9uVGVybWluYWxOb2RlLCAvLy9cbiAgICAgICAgICBicmFja2V0ZWRNZXRhc3RhdGVtZW50Q2hpbGROb2RlTWF0Y2hlcyA9IG1hdGNoQnJhY2tldGVkTWV0YXN0YXRlbWVudENoaWxkTm9kZShjaGlsZE5vZGVzLCAoYnJhY2tldGVkTWV0YXN0YXRlbWVudENoaWxkTm9kZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbWV0YXN0YXRlbWVudE5vZGUgPSBicmFja2V0ZWRNZXRhc3RhdGVtZW50Q2hpbGROb2RlLCAgLy8vXG4gICAgICAgICAgICAgICAgICBtZXRhQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGVNYXRjaGVzID0gbWF0Y2hNZXRhQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGUobWV0YUFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlLCBtZXRhc3RhdGVtZW50Tm9kZSksXG4gICAgICAgICAgICAgICAgICBicmFja2V0ZWRNZXRhc3RhdGVtZW50Q2hpbGROb2RlTWF0Y2hlcyA9IG1ldGFBc3NlcnRpb25NZXRhc3RhdGVtZW50Tm9kZU1hdGNoZXM7XG5cbiAgICAgICAgICAgIHJldHVybiBicmFja2V0ZWRNZXRhc3RhdGVtZW50Q2hpbGROb2RlTWF0Y2hlcztcbiAgICAgICAgICB9KTtcblxuICAgIG1ldGFBc3NlcnRpb25NZXRhc3RhdGVtZW50Tm9kZU1hdGNoZXMgPSBicmFja2V0ZWRNZXRhc3RhdGVtZW50Q2hpbGROb2RlTWF0Y2hlczsgIC8vL1xuICB9XG5cbiAgaWYgKCFtZXRhQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGVNYXRjaGVzKSB7XG4gICAgY29uc3QgbWV0YUFzc2VydGlvbk5vblRlcm1pbmFsTm9kZSA9IG1ldGFBc3NlcnRpb25NZXRhc3RhdGVtZW50Tm9kZSwgIC8vL1xuICAgICAgICAgIG1ldGFBc3NlcnRpb25DaGlsZE5vZGVzID0gbWV0YUFzc2VydGlvbk5vblRlcm1pbmFsTm9kZS5nZXRDaGlsZE5vZGVzKCksXG4gICAgICAgICAgYnJhY2tldGVkTWV0YUFzc2VydGlvbk1ldGFzdGF0ZW1lbnRDaGlsZE5vZGVNYXRjaGVzID0gbWF0Y2hCcmFja2V0ZWRNZXRhc3RhdGVtZW50Q2hpbGROb2RlKG1ldGFBc3NlcnRpb25DaGlsZE5vZGVzLCAoYnJhY2tldGVkTWV0YUFzc2VydGlvbk1ldGFzdGF0ZW1lbnRDaGlsZE5vZGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1ldGFBc3NlcnRpb25NZXRhc3RhdGVtZW50Tm9kZSA9IGJyYWNrZXRlZE1ldGFBc3NlcnRpb25NZXRhc3RhdGVtZW50Q2hpbGROb2RlLCAgLy8vXG4gICAgICAgICAgICAgICAgICBtZXRhQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGVNYXRjaGVzID0gbWF0Y2hNZXRhQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGUobWV0YUFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlLCBtZXRhc3RhdGVtZW50Tm9kZSksXG4gICAgICAgICAgICAgICAgICBicmFja2V0ZWRNZXRhQXNzZXJ0aW9uTWV0YXN0YXRlbWVudENoaWxkTm9kZU1hdGNoZXMgPSBtZXRhQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGVNYXRjaGVzO1xuXG4gICAgICAgICAgICByZXR1cm4gYnJhY2tldGVkTWV0YUFzc2VydGlvbk1ldGFzdGF0ZW1lbnRDaGlsZE5vZGVNYXRjaGVzO1xuICAgICAgICAgIH0pO1xuXG4gICAgbWV0YUFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlTWF0Y2hlcyA9IGJyYWNrZXRlZE1ldGFBc3NlcnRpb25NZXRhc3RhdGVtZW50Q2hpbGROb2RlTWF0Y2hlczsgIC8vL1xuICB9XG5cbiAgY29uc3QgdG9wbW9zdE1ldGFBc3NlcnRpb25NZXRhc3RhdGVtZW50Tm9kZU1hdGNoZXMgPSBtZXRhQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGVNYXRjaGVzOyAgLy8vXG5cbiAgcmV0dXJuIHRvcG1vc3RNZXRhQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGVNYXRjaGVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnJhY2tldGVkTWV0YXN0YXRlbWVudENoaWxkTm9kZUZyb21DaGlsZE5vZGVzKGNoaWxkTm9kZXMpIHtcbiAgbGV0IGJyYWNrZXRlZE1ldGFzdGF0ZW1lbnRDaGlsZE5vZGUgPSBudWxsO1xuXG4gIGNvbnN0IGNoaWxkTm9kZXNMZW5ndGggPSBjaGlsZE5vZGVzLmxlbmd0aDtcblxuICBpZiAoY2hpbGROb2Rlc0xlbmd0aCA9PT0gQlJBQ0tFVEVEX01FVEFTVEFURU1FTlRfQ0hJTERfTk9ERVNfTEVOR1RIKSB7XG4gICAgY29uc3QgZmlyc3RDaGlsZE5vZGUgPSBmaXJzdChjaGlsZE5vZGVzKSxcbiAgICAgICAgICB0aGlyZENoaWxkTm9kZSA9IHRoaXJkKGNoaWxkTm9kZXMpLFxuICAgICAgICAgIHNlY29uZENoaWxkTm9kZSA9IHNlY29uZChjaGlsZE5vZGVzKSxcbiAgICAgICAgICBmaXJzdENoaWxkTm9kZVRlcm1pbmFsTm9kZSA9IGZpcnN0Q2hpbGROb2RlLmlzVGVybWluYWxOb2RlKCksXG4gICAgICAgICAgdGhpcmRDaGlsZE5vZGVUZXJtaW5hbE5vZGUgPSB0aGlyZENoaWxkTm9kZS5pc1Rlcm1pbmFsTm9kZSgpLFxuICAgICAgICAgIHNlY29uZENoaWxkTm9kZU5vblRlcm1pbmFsTm9kZSA9IHNlY29uZENoaWxkTm9kZS5pc05vblRlcm1pbmFsTm9kZSgpO1xuXG4gICAgaWYgKGZpcnN0Q2hpbGROb2RlVGVybWluYWxOb2RlICYmIHNlY29uZENoaWxkTm9kZU5vblRlcm1pbmFsTm9kZSAmJiB0aGlyZENoaWxkTm9kZVRlcm1pbmFsTm9kZSkge1xuICAgICAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gc2Vjb25kQ2hpbGROb2RlLCAgLy8vXG4gICAgICAgICAgICBmaXJzdFRlcm1pbmFsTm9kZSA9IGZpcnN0Q2hpbGROb2RlLCAvLy9cbiAgICAgICAgICAgIHNlY29uZFRlcm1pbmFsTm9kZSA9IHRoaXJkQ2hpbGROb2RlLCAgLy8vXG4gICAgICAgICAgICBub25UZXJtaW5hbE5vZGVSdWxlTmFtZSA9IG5vblRlcm1pbmFsTm9kZS5nZXRSdWxlTmFtZSgpLFxuICAgICAgICAgICAgZmlyc3RUZXJtaW5hbE5vZGVDb250ZW50ID0gZmlyc3RUZXJtaW5hbE5vZGUuZ2V0Q29udGVudCgpLFxuICAgICAgICAgICAgc2Vjb25kVGVybWluYWxOb2RlQ29udGVudCA9IHNlY29uZFRlcm1pbmFsTm9kZS5nZXRDb250ZW50KCksXG4gICAgICAgICAgICBmaXJzdFRlcm1pbmFsTm9kZUNvbnRlbnRMZWZ0QnJhY2tldCA9IChmaXJzdFRlcm1pbmFsTm9kZUNvbnRlbnQgPT09IExFRlRfQlJBQ0tFVCksXG4gICAgICAgICAgICBzZWNvbmRUZXJtaW5hbE5vZGVDb250ZW50UmlnaHRCcmFja2V0ID0gKHNlY29uZFRlcm1pbmFsTm9kZUNvbnRlbnQgPT09IFJJR0hUX0JSQUNLRVQpLFxuICAgICAgICAgICAgbm9uVGVybWluYWxOb2RlUnVsZU5hbWVNZXRhc3RhdGVtZW50UnVsZU5hbWUgPSAobm9uVGVybWluYWxOb2RlUnVsZU5hbWUgPT09IE1FVEFTVEFURU1FTlRfUlVMRV9OQU1FKTtcblxuICAgICAgaWYgKGZpcnN0VGVybWluYWxOb2RlQ29udGVudExlZnRCcmFja2V0ICYmIG5vblRlcm1pbmFsTm9kZVJ1bGVOYW1lTWV0YXN0YXRlbWVudFJ1bGVOYW1lICYmIHNlY29uZFRlcm1pbmFsTm9kZUNvbnRlbnRSaWdodEJyYWNrZXQpIHtcbiAgICAgICAgYnJhY2tldGVkTWV0YXN0YXRlbWVudENoaWxkTm9kZSA9IG5vblRlcm1pbmFsTm9kZTsgIC8vL1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBicmFja2V0ZWRNZXRhc3RhdGVtZW50Q2hpbGROb2RlO1xufVxuXG5mdW5jdGlvbiBtYXRjaE1ldGFBc3NlcnRpb25Ob2RlKG1ldGFBc3NlcnRpb25Ob2RlLCBub2RlKSB7XG4gIGxldCBtZXRhQXNzZXJ0aW9uTm9kZU1hdGNoZXMgPSBmYWxzZTtcblxuICBjb25zdCBub2RlVGVybWluYWxOb2RlID0gbm9kZS5pc1Rlcm1pbmFsTm9kZSgpLFxuICAgIHJ1bGVOb2RlVGVybWluYWxOb2RlID0gbWV0YUFzc2VydGlvbk5vZGUuaXNUZXJtaW5hbE5vZGUoKTtcblxuICBpZiAobm9kZVRlcm1pbmFsTm9kZSA9PT0gcnVsZU5vZGVUZXJtaW5hbE5vZGUpIHtcbiAgICBpZiAobm9kZVRlcm1pbmFsTm9kZSkge1xuICAgICAgY29uc3QgdGVybWluYWxOb2RlID0gbm9kZSwgIC8vL1xuICAgICAgICBtZXRhQXNzZXJ0aW9uVGVybWluYWxOb2RlID0gbWV0YUFzc2VydGlvbk5vZGUsICAvLy9cbiAgICAgICAgbWV0YUFzc2VydGlvblRlcm1pbmFsTm9kZU1hdGNoZXMgPSBtYXRjaE1ldGFBc3NlcnRpb25UZXJtaW5hbE5vZGUobWV0YUFzc2VydGlvblRlcm1pbmFsTm9kZSwgdGVybWluYWxOb2RlKTtcblxuICAgICAgbWV0YUFzc2VydGlvbk5vZGVNYXRjaGVzID0gbWV0YUFzc2VydGlvblRlcm1pbmFsTm9kZU1hdGNoZXM7ICAvLy9cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gbm9kZSwgLy8vXG4gICAgICAgIG1ldGFBc3NlcnRpb25Ob25UZXJtaW5hbE5vZGUgPSBtZXRhQXNzZXJ0aW9uTm9kZSwgIC8vL1xuICAgICAgICBtZXRhQXNzZXJ0aW9uTm9uVGVybWluYWxOb2RlTWF0Y2hlcyA9IG1hdGNoTWV0YUFzc2VydGlvbk5vblRlcm1pbmFsTm9kZShtZXRhQXNzZXJ0aW9uTm9uVGVybWluYWxOb2RlLCBub25UZXJtaW5hbE5vZGUpO1xuXG4gICAgICBtZXRhQXNzZXJ0aW9uTm9kZU1hdGNoZXMgPSBtZXRhQXNzZXJ0aW9uTm9uVGVybWluYWxOb2RlTWF0Y2hlczsgLy8vXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG1ldGFBc3NlcnRpb25Ob2RlTWF0Y2hlcztcbn1cblxuZnVuY3Rpb24gbWF0Y2hNZXRhQXNzZXJ0aW9uTm9kZXMobWV0YUFzc2VydGlvbk5vZGVzLCBub2Rlcykge1xuICBsZXQgbWV0YUFzc2VydGlvbk5vZGVzTWF0Y2hlcyA9IGZhbHNlO1xuXG4gIGNvbnN0IG5vZGVzTGVuZ3RoID0gbm9kZXMubGVuZ3RoLFxuICAgIG1ldGFBc3NlcnRpb25Ob2Rlc0xlbmd0aCA9IG1ldGFBc3NlcnRpb25Ob2Rlcy5sZW5ndGg7XG5cbiAgaWYgKG5vZGVzTGVuZ3RoID09PSBtZXRhQXNzZXJ0aW9uTm9kZXNMZW5ndGgpIHtcbiAgICBtZXRhQXNzZXJ0aW9uTm9kZXNNYXRjaGVzID0gbm9kZXMuZXZlcnkoKG5vZGUsIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCBtZXRhQXNzZXJ0aW9uTm9kZSA9IG1ldGFBc3NlcnRpb25Ob2Rlc1tpbmRleF0sXG4gICAgICAgIG1ldGFBc3NlcnRpb25Ob2RlTWF0Y2hlcyA9IG1hdGNoTWV0YUFzc2VydGlvbk5vZGUobWV0YUFzc2VydGlvbk5vZGUsIG5vZGUpO1xuXG4gICAgICBpZiAobWV0YUFzc2VydGlvbk5vZGVNYXRjaGVzKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIG1ldGFBc3NlcnRpb25Ob2Rlc01hdGNoZXM7XG59XG5cbmZ1bmN0aW9uIG1hdGNoTWV0YUFzc2VydGlvblRlcm1pbmFsTm9kZShtZXRhQXNzZXJ0aW9uVGVybWluYWxOb2RlLCB0ZXJtaW5hbE5vZGUpIHtcbiAgbGV0IG1ldGFBc3NlcnRpb25UZXJtaW5hbE5vZGVNYXRjaGVzID0gZmFsc2U7XG5cbiAgY29uc3QgbWF0Y2hlcyA9IG1ldGFBc3NlcnRpb25UZXJtaW5hbE5vZGUubWF0Y2godGVybWluYWxOb2RlKTtcblxuICBpZiAobWF0Y2hlcykge1xuICAgIG1ldGFBc3NlcnRpb25UZXJtaW5hbE5vZGVNYXRjaGVzID0gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBtZXRhQXNzZXJ0aW9uVGVybWluYWxOb2RlTWF0Y2hlcztcbn1cblxuZnVuY3Rpb24gbWF0Y2hNZXRhQXNzZXJ0aW9uTm9uVGVybWluYWxOb2RlKG1ldGFBc3NlcnRpb25Ob25UZXJtaW5hbE5vZGUsIG5vblRlcm1pbmFsTm9kZSkge1xuICBsZXQgbWV0YUFzc2VydGlvbk5vblRlcm1pbmFsTm9kZU1hdGNoZXMgPSBmYWxzZTtcblxuICBjb25zdCBydWxlTmFtZSA9IG5vblRlcm1pbmFsTm9kZS5nZXRSdWxlTmFtZSgpLFxuICAgIG1ldGFBc3NlcnRpb25SdWxlTmFtZSA9IG1ldGFBc3NlcnRpb25Ob25UZXJtaW5hbE5vZGUuZ2V0UnVsZU5hbWUoKTsgLy8vXG5cbiAgaWYgKHJ1bGVOYW1lID09PSBtZXRhQXNzZXJ0aW9uUnVsZU5hbWUpIHtcbiAgICBjb25zdCBjaGlsZE5vZGVzID0gbm9uVGVybWluYWxOb2RlLmdldENoaWxkTm9kZXMoKSxcbiAgICAgIG5vZGVzID0gY2hpbGROb2RlcywgLy8vXG4gICAgICBtZXRhQXNzZXJ0aW9uQ2hpbGROb2RlcyA9IG1ldGFBc3NlcnRpb25Ob25UZXJtaW5hbE5vZGUuZ2V0Q2hpbGROb2RlcygpLFxuICAgICAgbWV0YUFzc2VydGlvbk5vZGVzID0gbWV0YUFzc2VydGlvbkNoaWxkTm9kZXMsIC8vL1xuICAgICAgbWV0YUFzc2VydGlvbk5vZGVzTWF0Y2hlcyA9IG1hdGNoTWV0YUFzc2VydGlvbk5vZGVzKG1ldGFBc3NlcnRpb25Ob2Rlcywgbm9kZXMpO1xuXG4gICAgbWV0YUFzc2VydGlvbk5vblRlcm1pbmFsTm9kZU1hdGNoZXMgPSBtZXRhQXNzZXJ0aW9uTm9kZXNNYXRjaGVzOyAgLy8vXG4gIH1cblxuICByZXR1cm4gbWV0YUFzc2VydGlvbk5vblRlcm1pbmFsTm9kZU1hdGNoZXM7XG59XG5cbmZ1bmN0aW9uIG1hdGNoTWV0YUFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlKG1ldGFBc3NlcnRpb25NZXRhc3RhdGVtZW50Tm9kZSwgbWV0YXN0YXRlbWVudE5vZGUpIHtcbiAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gbWV0YXN0YXRlbWVudE5vZGUsICAvLy9cbiAgICBtZXRhQXNzZXJ0aW9uTm9uVGVybWluYWxOb2RlID0gbWV0YUFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlLCAgLy8vXG4gICAgbWV0YUFzc2VydGlvbk5vblRlcm1pbmFsTm9kZU1hdGNoZXMgPSBtYXRjaE1ldGFBc3NlcnRpb25Ob25UZXJtaW5hbE5vZGUobWV0YUFzc2VydGlvbk5vblRlcm1pbmFsTm9kZSwgbm9uVGVybWluYWxOb2RlKSxcbiAgICBtZXRhQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGVOYXRjaGVzID0gbWV0YUFzc2VydGlvbk5vblRlcm1pbmFsTm9kZU1hdGNoZXM7ICAvLy9cblxuICByZXR1cm4gbWV0YUFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlTmF0Y2hlcztcbn1cbiJdLCJuYW1lcyI6WyJtYXRjaEJyYWNrZXRlZE1ldGFzdGF0ZW1lbnRDaGlsZE5vZGUiLCJtYXRjaFRvcG1vc3RNZXRhQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGUiLCJicmFja2V0ZWRNZXRhc3RhdGVtZW50Q2hpbGROb2RlRnJvbUNoaWxkTm9kZXMiLCJjaGlsZE5vZGVzIiwiY2FsbGJhY2siLCJicmFja2V0ZWRNZXRhc3RhdGVtZW50Q2hpbGROb2RlTWF0Y2hlcyIsImJyYWNrZXRlZE1ldGFzdGF0ZW1lbnRDaGlsZE5vZGUiLCJ0b3Btb3N0TWV0YUFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlIiwidG9wbW9zdE1ldGFzdGF0ZW1lbnROb2RlIiwibWV0YUFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlTWF0Y2hlcyIsIm1ldGFzdGF0ZW1lbnROb2RlIiwibWV0YUFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlIiwibWF0Y2hNZXRhQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGUiLCJub25UZXJtaW5hbE5vZGUiLCJtZXRhQXNzZXJ0aW9uTm9uVGVybWluYWxOb2RlIiwibWV0YUFzc2VydGlvbkNoaWxkTm9kZXMiLCJnZXRDaGlsZE5vZGVzIiwiYnJhY2tldGVkTWV0YUFzc2VydGlvbk1ldGFzdGF0ZW1lbnRDaGlsZE5vZGVNYXRjaGVzIiwiYnJhY2tldGVkTWV0YUFzc2VydGlvbk1ldGFzdGF0ZW1lbnRDaGlsZE5vZGUiLCJ0b3Btb3N0TWV0YUFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlTWF0Y2hlcyIsImNoaWxkTm9kZXNMZW5ndGgiLCJsZW5ndGgiLCJCUkFDS0VURURfTUVUQVNUQVRFTUVOVF9DSElMRF9OT0RFU19MRU5HVEgiLCJmaXJzdENoaWxkTm9kZSIsImZpcnN0IiwidGhpcmRDaGlsZE5vZGUiLCJ0aGlyZCIsInNlY29uZENoaWxkTm9kZSIsInNlY29uZCIsImZpcnN0Q2hpbGROb2RlVGVybWluYWxOb2RlIiwiaXNUZXJtaW5hbE5vZGUiLCJ0aGlyZENoaWxkTm9kZVRlcm1pbmFsTm9kZSIsInNlY29uZENoaWxkTm9kZU5vblRlcm1pbmFsTm9kZSIsImlzTm9uVGVybWluYWxOb2RlIiwiZmlyc3RUZXJtaW5hbE5vZGUiLCJzZWNvbmRUZXJtaW5hbE5vZGUiLCJub25UZXJtaW5hbE5vZGVSdWxlTmFtZSIsImdldFJ1bGVOYW1lIiwiZmlyc3RUZXJtaW5hbE5vZGVDb250ZW50IiwiZ2V0Q29udGVudCIsInNlY29uZFRlcm1pbmFsTm9kZUNvbnRlbnQiLCJmaXJzdFRlcm1pbmFsTm9kZUNvbnRlbnRMZWZ0QnJhY2tldCIsIkxFRlRfQlJBQ0tFVCIsInNlY29uZFRlcm1pbmFsTm9kZUNvbnRlbnRSaWdodEJyYWNrZXQiLCJSSUdIVF9CUkFDS0VUIiwibm9uVGVybWluYWxOb2RlUnVsZU5hbWVNZXRhc3RhdGVtZW50UnVsZU5hbWUiLCJNRVRBU1RBVEVNRU5UX1JVTEVfTkFNRSIsIm1hdGNoTWV0YUFzc2VydGlvbk5vZGUiLCJtZXRhQXNzZXJ0aW9uTm9kZSIsIm5vZGUiLCJtZXRhQXNzZXJ0aW9uTm9kZU1hdGNoZXMiLCJub2RlVGVybWluYWxOb2RlIiwicnVsZU5vZGVUZXJtaW5hbE5vZGUiLCJ0ZXJtaW5hbE5vZGUiLCJtZXRhQXNzZXJ0aW9uVGVybWluYWxOb2RlIiwibWV0YUFzc2VydGlvblRlcm1pbmFsTm9kZU1hdGNoZXMiLCJtYXRjaE1ldGFBc3NlcnRpb25UZXJtaW5hbE5vZGUiLCJtZXRhQXNzZXJ0aW9uTm9uVGVybWluYWxOb2RlTWF0Y2hlcyIsIm1hdGNoTWV0YUFzc2VydGlvbk5vblRlcm1pbmFsTm9kZSIsIm1hdGNoTWV0YUFzc2VydGlvbk5vZGVzIiwibWV0YUFzc2VydGlvbk5vZGVzIiwibm9kZXMiLCJtZXRhQXNzZXJ0aW9uTm9kZXNNYXRjaGVzIiwibm9kZXNMZW5ndGgiLCJtZXRhQXNzZXJ0aW9uTm9kZXNMZW5ndGgiLCJldmVyeSIsImluZGV4IiwibWF0Y2hlcyIsIm1hdGNoIiwicnVsZU5hbWUiLCJtZXRhQXNzZXJ0aW9uUnVsZU5hbWUiLCJtZXRhQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGVOYXRjaGVzIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7SUFNZ0JBLG9DQUFvQztlQUFwQ0E7O0lBWUFDLDBDQUEwQztlQUExQ0E7O0lBeUNBQyw2Q0FBNkM7ZUFBN0NBOzs7cUJBekRxQjt5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
@@ -1,45 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- function _export(target, all) {
6
- for(var name in all)Object.defineProperty(target, name, {
7
- enumerable: true,
8
- get: all[name]
9
- });
10
- }
11
- _export(exports, {
12
- bracketedStatementChildNodeFromChildNodes: function() {
13
- return bracketedStatementChildNodeFromChildNodes;
14
- },
15
- matchBracketedStatementChildNode: function() {
16
- return matchBracketedStatementChildNode;
17
- }
18
- });
19
- var _array = require("../utilities/array");
20
- var _ruleNames = require("../ruleNames");
21
- var _constants = require("../constants");
22
- function bracketedStatementChildNodeFromChildNodes(childNodes) {
23
- var bracketedStatementChildNode = null;
24
- var childNodesLength = childNodes.length;
25
- if (childNodesLength === _constants.BRACKETED_STATEMENT_CHILD_NODES_LENGTH) {
26
- var firstChildNode = (0, _array.first)(childNodes), thirdChildNode = (0, _array.third)(childNodes), secondChildNode = (0, _array.second)(childNodes), firstChildNodeTerminalNode = firstChildNode.isTerminalNode(), thirdChildNodeTerminalNode = thirdChildNode.isTerminalNode(), secondChildNodeNonTerminalNode = secondChildNode.isNonTerminalNode();
27
- if (firstChildNodeTerminalNode && secondChildNodeNonTerminalNode && thirdChildNodeTerminalNode) {
28
- var nonTerminalNode = secondChildNode, firstTerminalNode = firstChildNode, secondTerminalNode = thirdChildNode, nonTerminalNodeRuleName = nonTerminalNode.getRuleName(), firstTerminalNodeContent = firstTerminalNode.getContent(), secondTerminalNodeContent = secondTerminalNode.getContent(), firstTerminalNodeContentLeftBracket = firstTerminalNodeContent === _constants.LEFT_BRACKET, secondTerminalNodeContentRightBracket = secondTerminalNodeContent === _constants.RIGHT_BRACKET, nonTerminalNodeRuleNameStatementRuleName = nonTerminalNodeRuleName === _ruleNames.STATEMENT_RULE_NAME;
29
- if (firstTerminalNodeContentLeftBracket && nonTerminalNodeRuleNameStatementRuleName && secondTerminalNodeContentRightBracket) {
30
- bracketedStatementChildNode = nonTerminalNode; ///
31
- }
32
- }
33
- }
34
- return bracketedStatementChildNode;
35
- }
36
- function matchBracketedStatementChildNode(childNodes, callback) {
37
- var bracketedStatementChildNodeMatches = false;
38
- var bracketedStatementChildNode = bracketedStatementChildNodeFromChildNodes(childNodes);
39
- if (bracketedStatementChildNode !== null) {
40
- bracketedStatementChildNodeMatches = callback(bracketedStatementChildNode);
41
- }
42
- return bracketedStatementChildNodeMatches;
43
- }
44
-
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvc3RhdGVtZW50LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBmaXJzdCwgc2Vjb25kLCB0aGlyZCB9IGZyb20gXCIuLi91dGlsaXRpZXMvYXJyYXlcIjtcbmltcG9ydCB7IFNUQVRFTUVOVF9SVUxFX05BTUUgfSBmcm9tIFwiLi4vcnVsZU5hbWVzXCI7XG5pbXBvcnQgeyBMRUZUX0JSQUNLRVQsIFJJR0hUX0JSQUNLRVQsIEJSQUNLRVRFRF9TVEFURU1FTlRfQ0hJTERfTk9ERVNfTEVOR1RIIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gYnJhY2tldGVkU3RhdGVtZW50Q2hpbGROb2RlRnJvbUNoaWxkTm9kZXMoY2hpbGROb2Rlcykge1xuICBsZXQgYnJhY2tldGVkU3RhdGVtZW50Q2hpbGROb2RlID0gbnVsbDtcblxuICBjb25zdCBjaGlsZE5vZGVzTGVuZ3RoID0gY2hpbGROb2Rlcy5sZW5ndGg7XG5cbiAgaWYgKGNoaWxkTm9kZXNMZW5ndGggPT09IEJSQUNLRVRFRF9TVEFURU1FTlRfQ0hJTERfTk9ERVNfTEVOR1RIKSB7XG4gICAgY29uc3QgZmlyc3RDaGlsZE5vZGUgPSBmaXJzdChjaGlsZE5vZGVzKSxcbiAgICAgICAgICB0aGlyZENoaWxkTm9kZSA9IHRoaXJkKGNoaWxkTm9kZXMpLFxuICAgICAgICAgIHNlY29uZENoaWxkTm9kZSA9IHNlY29uZChjaGlsZE5vZGVzKSxcbiAgICAgICAgICBmaXJzdENoaWxkTm9kZVRlcm1pbmFsTm9kZSA9IGZpcnN0Q2hpbGROb2RlLmlzVGVybWluYWxOb2RlKCksXG4gICAgICAgICAgdGhpcmRDaGlsZE5vZGVUZXJtaW5hbE5vZGUgPSB0aGlyZENoaWxkTm9kZS5pc1Rlcm1pbmFsTm9kZSgpLFxuICAgICAgICAgIHNlY29uZENoaWxkTm9kZU5vblRlcm1pbmFsTm9kZSA9IHNlY29uZENoaWxkTm9kZS5pc05vblRlcm1pbmFsTm9kZSgpO1xuXG4gICAgaWYgKGZpcnN0Q2hpbGROb2RlVGVybWluYWxOb2RlICYmIHNlY29uZENoaWxkTm9kZU5vblRlcm1pbmFsTm9kZSAmJiB0aGlyZENoaWxkTm9kZVRlcm1pbmFsTm9kZSkge1xuICAgICAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gc2Vjb25kQ2hpbGROb2RlLCAgLy8vXG4gICAgICAgICAgICBmaXJzdFRlcm1pbmFsTm9kZSA9IGZpcnN0Q2hpbGROb2RlLCAvLy9cbiAgICAgICAgICAgIHNlY29uZFRlcm1pbmFsTm9kZSA9IHRoaXJkQ2hpbGROb2RlLCAgLy8vXG4gICAgICAgICAgICBub25UZXJtaW5hbE5vZGVSdWxlTmFtZSA9IG5vblRlcm1pbmFsTm9kZS5nZXRSdWxlTmFtZSgpLFxuICAgICAgICAgICAgZmlyc3RUZXJtaW5hbE5vZGVDb250ZW50ID0gZmlyc3RUZXJtaW5hbE5vZGUuZ2V0Q29udGVudCgpLFxuICAgICAgICAgICAgc2Vjb25kVGVybWluYWxOb2RlQ29udGVudCA9IHNlY29uZFRlcm1pbmFsTm9kZS5nZXRDb250ZW50KCksXG4gICAgICAgICAgICBmaXJzdFRlcm1pbmFsTm9kZUNvbnRlbnRMZWZ0QnJhY2tldCA9IChmaXJzdFRlcm1pbmFsTm9kZUNvbnRlbnQgPT09IExFRlRfQlJBQ0tFVCksXG4gICAgICAgICAgICBzZWNvbmRUZXJtaW5hbE5vZGVDb250ZW50UmlnaHRCcmFja2V0ID0gKHNlY29uZFRlcm1pbmFsTm9kZUNvbnRlbnQgPT09IFJJR0hUX0JSQUNLRVQpLFxuICAgICAgICAgICAgbm9uVGVybWluYWxOb2RlUnVsZU5hbWVTdGF0ZW1lbnRSdWxlTmFtZSA9IChub25UZXJtaW5hbE5vZGVSdWxlTmFtZSA9PT0gU1RBVEVNRU5UX1JVTEVfTkFNRSk7XG5cbiAgICAgIGlmIChmaXJzdFRlcm1pbmFsTm9kZUNvbnRlbnRMZWZ0QnJhY2tldCAmJiBub25UZXJtaW5hbE5vZGVSdWxlTmFtZVN0YXRlbWVudFJ1bGVOYW1lICYmIHNlY29uZFRlcm1pbmFsTm9kZUNvbnRlbnRSaWdodEJyYWNrZXQpIHtcbiAgICAgICAgYnJhY2tldGVkU3RhdGVtZW50Q2hpbGROb2RlID0gbm9uVGVybWluYWxOb2RlOyAgLy8vXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGJyYWNrZXRlZFN0YXRlbWVudENoaWxkTm9kZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1hdGNoQnJhY2tldGVkU3RhdGVtZW50Q2hpbGROb2RlKGNoaWxkTm9kZXMsIGNhbGxiYWNrKSB7XG4gIGxldCBicmFja2V0ZWRTdGF0ZW1lbnRDaGlsZE5vZGVNYXRjaGVzID0gZmFsc2U7XG5cbiAgY29uc3QgYnJhY2tldGVkU3RhdGVtZW50Q2hpbGROb2RlID0gYnJhY2tldGVkU3RhdGVtZW50Q2hpbGROb2RlRnJvbUNoaWxkTm9kZXMoY2hpbGROb2Rlcyk7XG5cbiAgaWYgKGJyYWNrZXRlZFN0YXRlbWVudENoaWxkTm9kZSAhPT0gbnVsbCkge1xuICAgIGJyYWNrZXRlZFN0YXRlbWVudENoaWxkTm9kZU1hdGNoZXMgPSBjYWxsYmFjayhicmFja2V0ZWRTdGF0ZW1lbnRDaGlsZE5vZGUpO1xuICB9XG5cbiAgcmV0dXJuIGJyYWNrZXRlZFN0YXRlbWVudENoaWxkTm9kZU1hdGNoZXM7XG59XG4iXSwibmFtZXMiOlsiYnJhY2tldGVkU3RhdGVtZW50Q2hpbGROb2RlRnJvbUNoaWxkTm9kZXMiLCJtYXRjaEJyYWNrZXRlZFN0YXRlbWVudENoaWxkTm9kZSIsImNoaWxkTm9kZXMiLCJicmFja2V0ZWRTdGF0ZW1lbnRDaGlsZE5vZGUiLCJjaGlsZE5vZGVzTGVuZ3RoIiwibGVuZ3RoIiwiQlJBQ0tFVEVEX1NUQVRFTUVOVF9DSElMRF9OT0RFU19MRU5HVEgiLCJmaXJzdENoaWxkTm9kZSIsImZpcnN0IiwidGhpcmRDaGlsZE5vZGUiLCJ0aGlyZCIsInNlY29uZENoaWxkTm9kZSIsInNlY29uZCIsImZpcnN0Q2hpbGROb2RlVGVybWluYWxOb2RlIiwiaXNUZXJtaW5hbE5vZGUiLCJ0aGlyZENoaWxkTm9kZVRlcm1pbmFsTm9kZSIsInNlY29uZENoaWxkTm9kZU5vblRlcm1pbmFsTm9kZSIsImlzTm9uVGVybWluYWxOb2RlIiwibm9uVGVybWluYWxOb2RlIiwiZmlyc3RUZXJtaW5hbE5vZGUiLCJzZWNvbmRUZXJtaW5hbE5vZGUiLCJub25UZXJtaW5hbE5vZGVSdWxlTmFtZSIsImdldFJ1bGVOYW1lIiwiZmlyc3RUZXJtaW5hbE5vZGVDb250ZW50IiwiZ2V0Q29udGVudCIsInNlY29uZFRlcm1pbmFsTm9kZUNvbnRlbnQiLCJmaXJzdFRlcm1pbmFsTm9kZUNvbnRlbnRMZWZ0QnJhY2tldCIsIkxFRlRfQlJBQ0tFVCIsInNlY29uZFRlcm1pbmFsTm9kZUNvbnRlbnRSaWdodEJyYWNrZXQiLCJSSUdIVF9CUkFDS0VUIiwibm9uVGVybWluYWxOb2RlUnVsZU5hbWVTdGF0ZW1lbnRSdWxlTmFtZSIsIlNUQVRFTUVOVF9SVUxFX05BTUUiLCJjYWxsYmFjayIsImJyYWNrZXRlZFN0YXRlbWVudENoaWxkTm9kZU1hdGNoZXMiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztJQU1nQkEseUNBQXlDO2VBQXpDQTs7SUFpQ0FDLGdDQUFnQztlQUFoQ0E7OztxQkFyQ3FCO3lCQUNEO3lCQUNnRDtBQUU3RSxTQUFTRCwwQ0FBMENFLFVBQVUsRUFBRTtJQUNwRSxJQUFJQyw4QkFBOEIsSUFBSTtJQUV0QyxJQUFNQyxtQkFBbUJGLFdBQVdHLE1BQU07SUFFMUMsSUFBSUQscUJBQXFCRSxpREFBc0MsRUFBRTtRQUMvRCxJQUFNQyxpQkFBaUJDLElBQUFBLFlBQUssRUFBQ04sYUFDdkJPLGlCQUFpQkMsSUFBQUEsWUFBSyxFQUFDUixhQUN2QlMsa0JBQWtCQyxJQUFBQSxhQUFNLEVBQUNWLGFBQ3pCVyw2QkFBNkJOLGVBQWVPLGNBQWMsSUFDMURDLDZCQUE2Qk4sZUFBZUssY0FBYyxJQUMxREUsaUNBQWlDTCxnQkFBZ0JNLGlCQUFpQjtRQUV4RSxJQUFJSiw4QkFBOEJHLGtDQUFrQ0QsNEJBQTRCO1lBQzlGLElBQU1HLGtCQUFrQlAsaUJBQ2xCUSxvQkFBb0JaLGdCQUNwQmEscUJBQXFCWCxnQkFDckJZLDBCQUEwQkgsZ0JBQWdCSSxXQUFXLElBQ3JEQywyQkFBMkJKLGtCQUFrQkssVUFBVSxJQUN2REMsNEJBQTRCTCxtQkFBbUJJLFVBQVUsSUFDekRFLHNDQUF1Q0gsNkJBQTZCSSx1QkFBWSxFQUNoRkMsd0NBQXlDSCw4QkFBOEJJLHdCQUFhLEVBQ3BGQywyQ0FBNENULDRCQUE0QlUsOEJBQW1CO1lBRWpHLElBQUlMLHVDQUF1Q0ksNENBQTRDRix1Q0FBdUM7Z0JBQzVIekIsOEJBQThCZSxpQkFBa0IsR0FBRztZQUNyRCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPZjtBQUNUO0FBRU8sU0FBU0YsaUNBQWlDQyxVQUFVLEVBQUU4QixRQUFRLEVBQUU7SUFDckUsSUFBSUMscUNBQXFDLEtBQUs7SUFFOUMsSUFBTTlCLDhCQUE4QkgsMENBQTBDRTtJQUU5RSxJQUFJQyxnQ0FBZ0MsSUFBSSxFQUFFO1FBQ3hDOEIscUNBQXFDRCxTQUFTN0I7SUFDaEQsQ0FBQztJQUVELE9BQU84QjtBQUNUIn0=
@@ -1,176 +0,0 @@
1
- "use strict";
2
-
3
- import { first, second, third } from "../utilities/array";
4
- import { METASTATEMENT_RULE_NAME } from "../ruleNames";
5
- import { LEFT_BRACKET, RIGHT_BRACKET, BRACKETED_METASTATEMENT_CHILD_NODES_LENGTH } from "../constants";
6
-
7
- export function matchBracketedMetastatementChildNode(childNodes, callback) {
8
- let bracketedMetastatementChildNodeMatches = false;
9
-
10
- const bracketedMetastatementChildNode = bracketedMetastatementChildNodeFromChildNodes(childNodes);
11
-
12
- if (bracketedMetastatementChildNode !== null) {
13
- bracketedMetastatementChildNodeMatches = callback(bracketedMetastatementChildNode);
14
- }
15
-
16
- return bracketedMetastatementChildNodeMatches;
17
- }
18
-
19
- export function matchTopmostMetaAssertionMetastatementNode(topmostMetaAssertionMetastatementNode, topmostMetastatementNode) {
20
- let metaAssertionMetastatementNodeMatches;
21
-
22
- const metastatementNode = topmostMetastatementNode, ///
23
- metaAssertionMetastatementNode = topmostMetaAssertionMetastatementNode; ///
24
-
25
- metaAssertionMetastatementNodeMatches = matchMetaAssertionMetastatementNode(metaAssertionMetastatementNode, metastatementNode);
26
-
27
- if (!metaAssertionMetastatementNodeMatches) {
28
- const nonTerminalNode = metastatementNode, ///
29
- childNodes = nonTerminalNode, ///
30
- bracketedMetastatementChildNodeMatches = matchBracketedMetastatementChildNode(childNodes, (bracketedMetastatementChildNode) => {
31
- const metastatementNode = bracketedMetastatementChildNode, ///
32
- metaAssertionMetastatementNodeMatches = matchMetaAssertionMetastatementNode(metaAssertionMetastatementNode, metastatementNode),
33
- bracketedMetastatementChildNodeMatches = metaAssertionMetastatementNodeMatches;
34
-
35
- return bracketedMetastatementChildNodeMatches;
36
- });
37
-
38
- metaAssertionMetastatementNodeMatches = bracketedMetastatementChildNodeMatches; ///
39
- }
40
-
41
- if (!metaAssertionMetastatementNodeMatches) {
42
- const metaAssertionNonTerminalNode = metaAssertionMetastatementNode, ///
43
- metaAssertionChildNodes = metaAssertionNonTerminalNode.getChildNodes(),
44
- bracketedMetaAssertionMetastatementChildNodeMatches = matchBracketedMetastatementChildNode(metaAssertionChildNodes, (bracketedMetaAssertionMetastatementChildNode) => {
45
- const metaAssertionMetastatementNode = bracketedMetaAssertionMetastatementChildNode, ///
46
- metaAssertionMetastatementNodeMatches = matchMetaAssertionMetastatementNode(metaAssertionMetastatementNode, metastatementNode),
47
- bracketedMetaAssertionMetastatementChildNodeMatches = metaAssertionMetastatementNodeMatches;
48
-
49
- return bracketedMetaAssertionMetastatementChildNodeMatches;
50
- });
51
-
52
- metaAssertionMetastatementNodeMatches = bracketedMetaAssertionMetastatementChildNodeMatches; ///
53
- }
54
-
55
- const topmostMetaAssertionMetastatementNodeMatches = metaAssertionMetastatementNodeMatches; ///
56
-
57
- return topmostMetaAssertionMetastatementNodeMatches;
58
- }
59
-
60
- export function bracketedMetastatementChildNodeFromChildNodes(childNodes) {
61
- let bracketedMetastatementChildNode = null;
62
-
63
- const childNodesLength = childNodes.length;
64
-
65
- if (childNodesLength === BRACKETED_METASTATEMENT_CHILD_NODES_LENGTH) {
66
- const firstChildNode = first(childNodes),
67
- thirdChildNode = third(childNodes),
68
- secondChildNode = second(childNodes),
69
- firstChildNodeTerminalNode = firstChildNode.isTerminalNode(),
70
- thirdChildNodeTerminalNode = thirdChildNode.isTerminalNode(),
71
- secondChildNodeNonTerminalNode = secondChildNode.isNonTerminalNode();
72
-
73
- if (firstChildNodeTerminalNode && secondChildNodeNonTerminalNode && thirdChildNodeTerminalNode) {
74
- const nonTerminalNode = secondChildNode, ///
75
- firstTerminalNode = firstChildNode, ///
76
- secondTerminalNode = thirdChildNode, ///
77
- nonTerminalNodeRuleName = nonTerminalNode.getRuleName(),
78
- firstTerminalNodeContent = firstTerminalNode.getContent(),
79
- secondTerminalNodeContent = secondTerminalNode.getContent(),
80
- firstTerminalNodeContentLeftBracket = (firstTerminalNodeContent === LEFT_BRACKET),
81
- secondTerminalNodeContentRightBracket = (secondTerminalNodeContent === RIGHT_BRACKET),
82
- nonTerminalNodeRuleNameMetastatementRuleName = (nonTerminalNodeRuleName === METASTATEMENT_RULE_NAME);
83
-
84
- if (firstTerminalNodeContentLeftBracket && nonTerminalNodeRuleNameMetastatementRuleName && secondTerminalNodeContentRightBracket) {
85
- bracketedMetastatementChildNode = nonTerminalNode; ///
86
- }
87
- }
88
- }
89
-
90
- return bracketedMetastatementChildNode;
91
- }
92
-
93
- function matchMetaAssertionNode(metaAssertionNode, node) {
94
- let metaAssertionNodeMatches = false;
95
-
96
- const nodeTerminalNode = node.isTerminalNode(),
97
- ruleNodeTerminalNode = metaAssertionNode.isTerminalNode();
98
-
99
- if (nodeTerminalNode === ruleNodeTerminalNode) {
100
- if (nodeTerminalNode) {
101
- const terminalNode = node, ///
102
- metaAssertionTerminalNode = metaAssertionNode, ///
103
- metaAssertionTerminalNodeMatches = matchMetaAssertionTerminalNode(metaAssertionTerminalNode, terminalNode);
104
-
105
- metaAssertionNodeMatches = metaAssertionTerminalNodeMatches; ///
106
- } else {
107
- const nonTerminalNode = node, ///
108
- metaAssertionNonTerminalNode = metaAssertionNode, ///
109
- metaAssertionNonTerminalNodeMatches = matchMetaAssertionNonTerminalNode(metaAssertionNonTerminalNode, nonTerminalNode);
110
-
111
- metaAssertionNodeMatches = metaAssertionNonTerminalNodeMatches; ///
112
- }
113
- }
114
-
115
- return metaAssertionNodeMatches;
116
- }
117
-
118
- function matchMetaAssertionNodes(metaAssertionNodes, nodes) {
119
- let metaAssertionNodesMatches = false;
120
-
121
- const nodesLength = nodes.length,
122
- metaAssertionNodesLength = metaAssertionNodes.length;
123
-
124
- if (nodesLength === metaAssertionNodesLength) {
125
- metaAssertionNodesMatches = nodes.every((node, index) => {
126
- const metaAssertionNode = metaAssertionNodes[index],
127
- metaAssertionNodeMatches = matchMetaAssertionNode(metaAssertionNode, node);
128
-
129
- if (metaAssertionNodeMatches) {
130
- return true;
131
- }
132
- });
133
- }
134
-
135
- return metaAssertionNodesMatches;
136
- }
137
-
138
- function matchMetaAssertionTerminalNode(metaAssertionTerminalNode, terminalNode) {
139
- let metaAssertionTerminalNodeMatches = false;
140
-
141
- const matches = metaAssertionTerminalNode.match(terminalNode);
142
-
143
- if (matches) {
144
- metaAssertionTerminalNodeMatches = true;
145
- }
146
-
147
- return metaAssertionTerminalNodeMatches;
148
- }
149
-
150
- function matchMetaAssertionNonTerminalNode(metaAssertionNonTerminalNode, nonTerminalNode) {
151
- let metaAssertionNonTerminalNodeMatches = false;
152
-
153
- const ruleName = nonTerminalNode.getRuleName(),
154
- metaAssertionRuleName = metaAssertionNonTerminalNode.getRuleName(); ///
155
-
156
- if (ruleName === metaAssertionRuleName) {
157
- const childNodes = nonTerminalNode.getChildNodes(),
158
- nodes = childNodes, ///
159
- metaAssertionChildNodes = metaAssertionNonTerminalNode.getChildNodes(),
160
- metaAssertionNodes = metaAssertionChildNodes, ///
161
- metaAssertionNodesMatches = matchMetaAssertionNodes(metaAssertionNodes, nodes);
162
-
163
- metaAssertionNonTerminalNodeMatches = metaAssertionNodesMatches; ///
164
- }
165
-
166
- return metaAssertionNonTerminalNodeMatches;
167
- }
168
-
169
- function matchMetaAssertionMetastatementNode(metaAssertionMetastatementNode, metastatementNode) {
170
- const nonTerminalNode = metastatementNode, ///
171
- metaAssertionNonTerminalNode = metaAssertionMetastatementNode, ///
172
- metaAssertionNonTerminalNodeMatches = matchMetaAssertionNonTerminalNode(metaAssertionNonTerminalNode, nonTerminalNode),
173
- metaAssertionMetastatementNodeNatches = metaAssertionNonTerminalNodeMatches; ///
174
-
175
- return metaAssertionMetastatementNodeNatches;
176
- }
@@ -1,50 +0,0 @@
1
- "use strict";
2
-
3
- import { first, second, third } from "../utilities/array";
4
- import { STATEMENT_RULE_NAME } from "../ruleNames";
5
- import { LEFT_BRACKET, RIGHT_BRACKET, BRACKETED_STATEMENT_CHILD_NODES_LENGTH } from "../constants";
6
-
7
- export function bracketedStatementChildNodeFromChildNodes(childNodes) {
8
- let bracketedStatementChildNode = null;
9
-
10
- const childNodesLength = childNodes.length;
11
-
12
- if (childNodesLength === BRACKETED_STATEMENT_CHILD_NODES_LENGTH) {
13
- const firstChildNode = first(childNodes),
14
- thirdChildNode = third(childNodes),
15
- secondChildNode = second(childNodes),
16
- firstChildNodeTerminalNode = firstChildNode.isTerminalNode(),
17
- thirdChildNodeTerminalNode = thirdChildNode.isTerminalNode(),
18
- secondChildNodeNonTerminalNode = secondChildNode.isNonTerminalNode();
19
-
20
- if (firstChildNodeTerminalNode && secondChildNodeNonTerminalNode && thirdChildNodeTerminalNode) {
21
- const nonTerminalNode = secondChildNode, ///
22
- firstTerminalNode = firstChildNode, ///
23
- secondTerminalNode = thirdChildNode, ///
24
- nonTerminalNodeRuleName = nonTerminalNode.getRuleName(),
25
- firstTerminalNodeContent = firstTerminalNode.getContent(),
26
- secondTerminalNodeContent = secondTerminalNode.getContent(),
27
- firstTerminalNodeContentLeftBracket = (firstTerminalNodeContent === LEFT_BRACKET),
28
- secondTerminalNodeContentRightBracket = (secondTerminalNodeContent === RIGHT_BRACKET),
29
- nonTerminalNodeRuleNameStatementRuleName = (nonTerminalNodeRuleName === STATEMENT_RULE_NAME);
30
-
31
- if (firstTerminalNodeContentLeftBracket && nonTerminalNodeRuleNameStatementRuleName && secondTerminalNodeContentRightBracket) {
32
- bracketedStatementChildNode = nonTerminalNode; ///
33
- }
34
- }
35
- }
36
-
37
- return bracketedStatementChildNode;
38
- }
39
-
40
- export function matchBracketedStatementChildNode(childNodes, callback) {
41
- let bracketedStatementChildNodeMatches = false;
42
-
43
- const bracketedStatementChildNode = bracketedStatementChildNodeFromChildNodes(childNodes);
44
-
45
- if (bracketedStatementChildNode !== null) {
46
- bracketedStatementChildNodeMatches = callback(bracketedStatementChildNode);
47
- }
48
-
49
- return bracketedStatementChildNodeMatches;
50
- }