occam-verify-cli 0.0.471 → 0.0.472

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 (37) hide show
  1. package/lib/constants.js +4 -8
  2. package/lib/context/metaproof.js +9 -2
  3. package/lib/context/proof.js +9 -2
  4. package/lib/equality.js +22 -0
  5. package/lib/metaSubstitution.js +12 -52
  6. package/lib/step/metaproof.js +7 -7
  7. package/lib/substitution.js +16 -56
  8. package/lib/utilities/node.js +57 -4
  9. package/lib/verify/derivation.js +4 -6
  10. package/lib/verify/metaDerivation.js +4 -6
  11. package/lib/verify/metaproof.js +3 -6
  12. package/lib/verify/metastatement/qualified.js +1 -7
  13. package/lib/verify/metastatement/unqualified.js +1 -7
  14. package/lib/verify/proof.js +3 -6
  15. package/lib/verify/statement/qualified.js +1 -7
  16. package/lib/verify/statement/unqualified.js +1 -7
  17. package/package.json +1 -1
  18. package/src/constants.js +1 -2
  19. package/src/context/metaproof.js +5 -1
  20. package/src/context/proof.js +5 -1
  21. package/src/equality.js +8 -0
  22. package/src/metaSubstitution.js +16 -87
  23. package/src/step/metaproof.js +13 -14
  24. package/src/substitution.js +19 -90
  25. package/src/utilities/node.js +78 -1
  26. package/src/verify/derivation.js +3 -8
  27. package/src/verify/metaDerivation.js +3 -8
  28. package/src/verify/metaproof.js +2 -8
  29. package/src/verify/metastatement/qualified.js +0 -9
  30. package/src/verify/metastatement/unqualified.js +0 -9
  31. package/src/verify/proof.js +2 -8
  32. package/src/verify/statement/qualified.js +0 -9
  33. package/src/verify/statement/unqualified.js +0 -9
  34. package/lib/utilities/metaAssertion.js +0 -117
  35. package/lib/utilities/statement.js +0 -45
  36. package/src/utilities/metaAssertion.js +0 -176
  37. package/src/utilities/statement.js +0 -50
@@ -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
- }