occam-verify-cli 0.0.617 → 0.0.619

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 (109) hide show
  1. package/lib/assignment.js +1 -1
  2. package/lib/axiom.js +1 -1
  3. package/lib/axiomLemmaTheoremConjecture.js +1 -1
  4. package/lib/combinator.js +1 -1
  5. package/lib/conclusion.js +1 -1
  6. package/lib/conjecture.js +1 -1
  7. package/lib/consequent.js +1 -1
  8. package/lib/constructor.js +1 -1
  9. package/lib/context/file.js +1 -1
  10. package/lib/context/metaproof.js +1 -1
  11. package/lib/context/proof.js +1 -1
  12. package/lib/context/release.js +1 -1
  13. package/lib/equality.js +3 -4
  14. package/lib/index.js +1 -1
  15. package/lib/label.js +1 -1
  16. package/lib/lemma.js +1 -1
  17. package/lib/log.js +1 -1
  18. package/lib/metaType.js +1 -1
  19. package/lib/metavariable.js +1 -1
  20. package/lib/mixins/file.js +1 -1
  21. package/lib/mixins/logging.js +1 -1
  22. package/lib/node/metastatement/bracketed.js +1 -1
  23. package/lib/node/statement/bracketed.js +1 -1
  24. package/lib/node/statement/combinator/bracketed.js +1 -1
  25. package/lib/node/statement/combinator/equality.js +1 -1
  26. package/lib/node/statement/equality.js +1 -1
  27. package/lib/ocmbinator/bracketed.js +1 -1
  28. package/lib/ocmbinator/equality.js +1 -1
  29. package/lib/permutationsMatrix.js +1 -1
  30. package/lib/premise.js +1 -1
  31. package/lib/rule.js +1 -1
  32. package/lib/step/metaproof.js +1 -1
  33. package/lib/step/proof.js +1 -1
  34. package/lib/substitution/metastatementForMetavariable.js +4 -11
  35. package/lib/substitution/statementForMetavariable.js +4 -11
  36. package/lib/substitution/termForVariable.js +2 -9
  37. package/lib/supposition.js +1 -1
  38. package/lib/theorem.js +1 -1
  39. package/lib/type.js +1 -1
  40. package/lib/utilities/array.js +1 -1
  41. package/lib/utilities/customGrammar.js +1 -1
  42. package/lib/utilities/metaproof.js +9 -10
  43. package/lib/utilities/node.js +1 -1
  44. package/lib/utilities/permutations.js +1 -1
  45. package/lib/utilities/proof.js +9 -10
  46. package/lib/utilities/query.js +1 -1
  47. package/lib/utilities/releaseContext.js +1 -1
  48. package/lib/utilities/string.js +1 -1
  49. package/lib/utilities/tokens.js +1 -1
  50. package/lib/variable.js +1 -1
  51. package/lib/verifier/metastatementForMetavariable/conclusion.js +1 -1
  52. package/lib/verifier/metastatementForMetavariable/premise.js +1 -1
  53. package/lib/verifier/metastatementForMetavariable.js +1 -1
  54. package/lib/verifier/statementForMetavariable/conclusion.js +1 -1
  55. package/lib/verifier/statementForMetavariable/premise.js +1 -1
  56. package/lib/verifier/statementForMetavariable.js +1 -1
  57. package/lib/verifier/termForVariable/consequent.js +1 -1
  58. package/lib/verifier/termForVariable/supposition.js +1 -1
  59. package/lib/verifier/termForVariable.js +1 -1
  60. package/lib/verifier.js +1 -1
  61. package/lib/verify/assertion/type.js +1 -1
  62. package/lib/verify/axiom.js +1 -1
  63. package/lib/verify/conclusion.js +1 -1
  64. package/lib/verify/conjecture.js +1 -1
  65. package/lib/verify/consequent.js +1 -1
  66. package/lib/verify/declaration/combinator.js +1 -1
  67. package/lib/verify/declaration/constructor.js +1 -1
  68. package/lib/verify/declaration/metavariable.js +1 -1
  69. package/lib/verify/declaration/topLevel.js +1 -1
  70. package/lib/verify/declaration/type.js +1 -1
  71. package/lib/verify/declaration/variable.js +1 -1
  72. package/lib/verify/derivation.js +1 -1
  73. package/lib/verify/file.js +1 -1
  74. package/lib/verify/files.js +1 -1
  75. package/lib/verify/label.js +1 -1
  76. package/lib/verify/labels.js +1 -1
  77. package/lib/verify/lemma.js +1 -1
  78. package/lib/verify/metastatement/qualified.js +1 -1
  79. package/lib/verify/metastatement/unqualified.js +1 -1
  80. package/lib/verify/metastatement.js +1 -1
  81. package/lib/verify/metavariable.js +1 -1
  82. package/lib/verify/premise.js +1 -1
  83. package/lib/verify/proof.js +3 -4
  84. package/lib/verify/release.js +1 -1
  85. package/lib/verify/rule.js +1 -1
  86. package/lib/verify/ruleDerivation.js +1 -1
  87. package/lib/verify/ruleProof.js +3 -4
  88. package/lib/verify/statement/qualified.js +1 -1
  89. package/lib/verify/statement/unqualified.js +1 -1
  90. package/lib/verify/statement.js +1 -1
  91. package/lib/verify/statementAsCombinator.js +1 -1
  92. package/lib/verify/supposition.js +1 -1
  93. package/lib/verify/term.js +1 -1
  94. package/lib/verify/termAsConstructor.js +1 -1
  95. package/lib/verify/theorem.js +1 -1
  96. package/lib/verify/type.js +1 -1
  97. package/lib/verify/typeInference.js +1 -1
  98. package/lib/verify/variable.js +1 -1
  99. package/package.json +3 -3
  100. package/src/equality.js +3 -6
  101. package/src/substitution/metastatementForMetavariable.js +3 -12
  102. package/src/substitution/statementForMetavariable.js +3 -12
  103. package/src/substitution/termForVariable.js +1 -7
  104. package/src/utilities/metaproof.js +9 -18
  105. package/src/utilities/proof.js +9 -18
  106. package/src/verify/proof.js +2 -5
  107. package/src/verify/ruleProof.js +2 -5
  108. package/lib/matcher.js +0 -100
  109. package/src/matcher.js +0 -84
@@ -1,6 +1,5 @@
1
1
  "use strict";
2
2
 
3
- import matcher from "../matcher";
4
3
  import bracketedStatementNode from "../node/statement/bracketed";
5
4
 
6
5
  import { nodeQuery } from "../utilities/query";
@@ -12,22 +11,18 @@ export function matchStatementModuloBrackets(statementNodeA, statementNodeB) {
12
11
  let statementMatchesModuloBrackets = false;
13
12
 
14
13
  if (!statementMatchesModuloBrackets) {
15
- const nodeA = statementNodeA, ///
16
- nodeB = statementNodeB, ///
17
- nonTerminalNodeMatches = matcher.matchNode(nodeA, nodeB);
14
+ const statementNodeMatches = statementNodeA.match(statementNodeB);
18
15
 
19
- statementMatchesModuloBrackets = nonTerminalNodeMatches; ///
16
+ statementMatchesModuloBrackets = statementNodeMatches; ///
20
17
  }
21
18
 
22
19
  if (!statementMatchesModuloBrackets) {
23
20
  const bracketedStatementChildNodeA = bracketedStatementChildNodeFromStatementNode(statementNodeA);
24
21
 
25
22
  if (bracketedStatementChildNodeA !== null) {
26
- const nodeA = bracketedStatementChildNodeA, ///
27
- nodeB = statementNodeB, ///
28
- nodeMatches = matcher.matchNode(nodeA, nodeB);
23
+ const bracketedStatementChildNodeAMatchStatementNodeB = bracketedStatementChildNodeA.match(statementNodeB);
29
24
 
30
- statementMatchesModuloBrackets = nodeMatches; ///
25
+ statementMatchesModuloBrackets = bracketedStatementChildNodeAMatchStatementNodeB; ///
31
26
  }
32
27
  }
33
28
 
@@ -35,11 +30,9 @@ export function matchStatementModuloBrackets(statementNodeA, statementNodeB) {
35
30
  const bracketedStatementChildNodeB = bracketedStatementChildNodeFromStatementNode(statementNodeB);
36
31
 
37
32
  if (bracketedStatementChildNodeB !== null) {
38
- const nodeA = statementNodeA, ///
39
- nodeB = bracketedStatementChildNodeB, ///
40
- nodeMatches = matcher.matchNode(nodeA, nodeB);
33
+ const statementNodeAMatchBracketedStatementChildNodeB = statementNodeA.match(bracketedStatementChildNodeB);
41
34
 
42
- statementMatchesModuloBrackets = nodeMatches; ///
35
+ statementMatchesModuloBrackets = statementNodeAMatchBracketedStatementChildNodeB; ///
43
36
  }
44
37
  }
45
38
 
@@ -49,12 +42,10 @@ export function matchStatementModuloBrackets(statementNodeA, statementNodeB) {
49
42
  export function bracketedStatementChildNodeFromStatementNode(statementNode) {
50
43
  let bracketedStatementChildNode = null;
51
44
 
52
- const nodeA = statementNode, ///
53
- nodeB = bracketedStatementNode, ///
54
- depth = BRACKETED_STATEMENT_DEPTH,
55
- nonTerminalNodeMatches = matcher.matchNode(nodeA, nodeB, depth);
45
+ const depth = BRACKETED_STATEMENT_DEPTH,
46
+ statementNodeMatchBracketedStatementNode = statementNode.match(bracketedStatementNode, depth);
56
47
 
57
- if (nonTerminalNodeMatches) {
48
+ if (statementNodeMatchBracketedStatementNode) {
58
49
  bracketedStatementChildNode = bracketedStatementChildNodeQuery(statementNode);
59
50
  }
60
51
 
@@ -1,6 +1,5 @@
1
1
  "use strict";
2
2
 
3
- import matcher from "../matcher";
4
3
  import ProofContext from "../context/proof";
5
4
  import verifyDerivation from "../verify/derivation";
6
5
 
@@ -21,11 +20,9 @@ export default function verifyProof(proofNode, conclusion, proofContext) {
21
20
  proofStep = lastProofStep, ///
22
21
  statementNode = proofStep.getStatementNode(),
23
22
  conclusionStatementNode = conclusion.getStatementNode(),
24
- nodeA = statementNode, ///
25
- nodeB = conclusionStatementNode, ///
26
- nodeMatches = matcher.matchNode(nodeA, nodeB);
23
+ statementNodeMatchConclusionStatementNode = statementNode.match(conclusionStatementNode);
27
24
 
28
- proofVerified = nodeMatches; ///
25
+ proofVerified = statementNodeMatchConclusionStatementNode; ///
29
26
  }
30
27
 
31
28
  return proofVerified;
@@ -1,6 +1,5 @@
1
1
  "use strict";
2
2
 
3
- import matcher from "../matcher";
4
3
  import MetaproofContext from "../context/metaproof";
5
4
  import verifyRuleDerivation from "../verify/ruleDerivation";
6
5
 
@@ -21,11 +20,9 @@ export default function verifyRuleProof(ruleProofNode, conclusion, metaproofCont
21
20
  metaproofStep = lastMetaproofStep, ///
22
21
  metastatementNode = metaproofStep.getMetastatementNode(),
23
22
  conclusionMetastatementNode = conclusion.getMetastatementNode(),
24
- nodeA = metastatementNode, ///
25
- nodeB = conclusionMetastatementNode, ///
26
- nodeMatches = matcher.matchNode(nodeA, nodeB);
23
+ metastatementNodeMatchConclusionMetastatementNode = metastatementNode.match(conclusionMetastatementNode);
27
24
 
28
- ruleProofVerified = nodeMatches; ///
25
+ ruleProofVerified = metastatementNodeMatchConclusionMetastatementNode; ///
29
26
  }
30
27
 
31
28
  return ruleProofVerified;
package/lib/matcher.js DELETED
@@ -1,100 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "default", {
6
- enumerable: true,
7
- get: function() {
8
- return _default;
9
- }
10
- });
11
- function _class_call_check(instance, Constructor) {
12
- if (!(instance instanceof Constructor)) {
13
- throw new TypeError("Cannot call a class as a function");
14
- }
15
- }
16
- function _defineProperties(target, props) {
17
- for(var i = 0; i < props.length; i++){
18
- var descriptor = props[i];
19
- descriptor.enumerable = descriptor.enumerable || false;
20
- descriptor.configurable = true;
21
- if ("value" in descriptor) descriptor.writable = true;
22
- Object.defineProperty(target, descriptor.key, descriptor);
23
- }
24
- }
25
- function _create_class(Constructor, protoProps, staticProps) {
26
- if (protoProps) _defineProperties(Constructor.prototype, protoProps);
27
- if (staticProps) _defineProperties(Constructor, staticProps);
28
- return Constructor;
29
- }
30
- var Matcher = /*#__PURE__*/ function() {
31
- function Matcher() {
32
- _class_call_check(this, Matcher);
33
- }
34
- _create_class(Matcher, [
35
- {
36
- key: "matchNode",
37
- value: function matchNode(nodeA, nodeB) {
38
- var depth = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : Infinity;
39
- var nodeMatches = false;
40
- if (depth === 0) {
41
- nodeMatches = true;
42
- } else {
43
- var nodeATerminalNode = nodeA.isTerminalNode(), nodeBTerminalNode = nodeB.isTerminalNode();
44
- if (nodeATerminalNode === nodeBTerminalNode) {
45
- if (nodeATerminalNode) {
46
- var terminalNodeA = nodeA, terminalNodeB = nodeB, terminalNodeMatches = this.matchTerminalNode(terminalNodeA, terminalNodeB);
47
- nodeMatches = terminalNodeMatches; ///
48
- } else {
49
- var nonTerminalNodeA = nodeA, nonTerminalNodeB = nodeB, nonTerminalNodeMatches = this.matchNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, depth);
50
- nodeMatches = nonTerminalNodeMatches; ///
51
- }
52
- }
53
- }
54
- return nodeMatches;
55
- }
56
- },
57
- {
58
- key: "matchNodes",
59
- value: function matchNodes(nodesA, nodesB, depth) {
60
- var _this = this;
61
- var nodesMatch = false;
62
- var nodesALength = nodesA.length, nodesBLength = nodesB.length;
63
- if (nodesALength === nodesBLength) {
64
- depth--;
65
- nodesMatch = nodesA.every(function(nodeA, index) {
66
- var nodeB = nodesB[index], nodeMatches = _this.matchNode(nodeA, nodeB, depth);
67
- if (nodeMatches) {
68
- return true;
69
- }
70
- });
71
- }
72
- return nodesMatch;
73
- }
74
- },
75
- {
76
- key: "matchTerminalNode",
77
- value: function matchTerminalNode(terminalNodeA, terminalNodeB, depth) {
78
- var matches = terminalNodeA.match(terminalNodeB), terminalNodeMatches = matches; ///
79
- return terminalNodeMatches;
80
- }
81
- },
82
- {
83
- key: "matchNonTerminalNode",
84
- value: function matchNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, depth) {
85
- var nonTerminalNodeMatches = false;
86
- var nonTerminalNodeARuleName = nonTerminalNodeA.getRuleName(), nonTerminalNodeBRuleName = nonTerminalNodeB.getRuleName(); ///
87
- if (nonTerminalNodeARuleName === nonTerminalNodeBRuleName) {
88
- var nonTerminalNodeAChildNodes = nonTerminalNodeA.getChildNodes(), nonTerminalNodeBChildNodes = nonTerminalNodeB.getChildNodes(), nodesA = nonTerminalNodeAChildNodes, nodesB = nonTerminalNodeBChildNodes, nodesMatch = this.matchNodes(nodesA, nodesB, depth);
89
- nonTerminalNodeMatches = nodesMatch; ///
90
- }
91
- return nonTerminalNodeMatches;
92
- }
93
- }
94
- ]);
95
- return Matcher;
96
- }();
97
- var matcher = new Matcher();
98
- var _default = matcher;
99
-
100
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9tYXRjaGVyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5jbGFzcyBNYXRjaGVyIHtcbiAgbWF0Y2hOb2RlKG5vZGVBLCBub2RlQiwgZGVwdGggPSBJbmZpbml0eSkge1xuICAgIGxldCBub2RlTWF0Y2hlcyA9IGZhbHNlO1xuXG4gICAgaWYgKGRlcHRoID09PSAwKSB7XG4gICAgICBub2RlTWF0Y2hlcyA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IG5vZGVBVGVybWluYWxOb2RlID0gbm9kZUEuaXNUZXJtaW5hbE5vZGUoKSxcbiAgICAgICAgICAgIG5vZGVCVGVybWluYWxOb2RlID0gbm9kZUIuaXNUZXJtaW5hbE5vZGUoKTtcblxuICAgICAgaWYgKG5vZGVBVGVybWluYWxOb2RlID09PSBub2RlQlRlcm1pbmFsTm9kZSkge1xuICAgICAgICBpZiAobm9kZUFUZXJtaW5hbE5vZGUpIHtcbiAgICAgICAgICBjb25zdCB0ZXJtaW5hbE5vZGVBID0gbm9kZUEsICAvLy9cbiAgICAgICAgICAgICAgICB0ZXJtaW5hbE5vZGVCID0gbm9kZUIsICAvLy9cbiAgICAgICAgICAgICAgICB0ZXJtaW5hbE5vZGVNYXRjaGVzID0gdGhpcy5tYXRjaFRlcm1pbmFsTm9kZSh0ZXJtaW5hbE5vZGVBLCB0ZXJtaW5hbE5vZGVCKTtcblxuICAgICAgICAgIG5vZGVNYXRjaGVzID0gdGVybWluYWxOb2RlTWF0Y2hlczsgIC8vL1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZUEgPSBub2RlQSwgIC8vL1xuICAgICAgICAgICAgICAgIG5vblRlcm1pbmFsTm9kZUIgPSBub2RlQiwgLy8vXG4gICAgICAgICAgICAgICAgbm9uVGVybWluYWxOb2RlTWF0Y2hlcyA9IHRoaXMubWF0Y2hOb25UZXJtaW5hbE5vZGUobm9uVGVybWluYWxOb2RlQSwgbm9uVGVybWluYWxOb2RlQiwgZGVwdGgpO1xuXG4gICAgICAgICAgbm9kZU1hdGNoZXMgPSBub25UZXJtaW5hbE5vZGVNYXRjaGVzOyAvLy9cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBub2RlTWF0Y2hlcztcbiAgfVxuXG4gIG1hdGNoTm9kZXMobm9kZXNBLCBub2Rlc0IsIGRlcHRoKSB7XG4gICAgbGV0IG5vZGVzTWF0Y2ggPSBmYWxzZTtcblxuICAgIGNvbnN0IG5vZGVzQUxlbmd0aCA9IG5vZGVzQS5sZW5ndGgsXG4gICAgICAgICAgbm9kZXNCTGVuZ3RoID0gbm9kZXNCLmxlbmd0aDtcblxuICAgIGlmIChub2Rlc0FMZW5ndGggPT09IG5vZGVzQkxlbmd0aCkge1xuICAgICAgZGVwdGgtLTtcblxuICAgICAgbm9kZXNNYXRjaCA9IG5vZGVzQS5ldmVyeSgobm9kZUEsIGluZGV4KSA9PiB7XG4gICAgICAgIGNvbnN0IG5vZGVCID0gbm9kZXNCW2luZGV4XSxcbiAgICAgICAgICAgICAgbm9kZU1hdGNoZXMgPSB0aGlzLm1hdGNoTm9kZShub2RlQSwgbm9kZUIsIGRlcHRoKTtcblxuICAgICAgICBpZiAobm9kZU1hdGNoZXMpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG5cbiAgICByZXR1cm4gbm9kZXNNYXRjaDtcbiAgfVxuXG4gIG1hdGNoVGVybWluYWxOb2RlKHRlcm1pbmFsTm9kZUEsIHRlcm1pbmFsTm9kZUIsIGRlcHRoKSB7XG4gICAgY29uc3QgbWF0Y2hlcyA9IHRlcm1pbmFsTm9kZUEubWF0Y2godGVybWluYWxOb2RlQiksXG4gICAgICAgICAgdGVybWluYWxOb2RlTWF0Y2hlcyA9IG1hdGNoZXM7ICAvLy9cblxuICAgIHJldHVybiB0ZXJtaW5hbE5vZGVNYXRjaGVzO1xuICB9XG5cbiAgbWF0Y2hOb25UZXJtaW5hbE5vZGUobm9uVGVybWluYWxOb2RlQSwgbm9uVGVybWluYWxOb2RlQiwgZGVwdGgpIHtcbiAgICBsZXQgbm9uVGVybWluYWxOb2RlTWF0Y2hlcyA9IGZhbHNlO1xuXG4gICAgY29uc3Qgbm9uVGVybWluYWxOb2RlQVJ1bGVOYW1lID0gbm9uVGVybWluYWxOb2RlQS5nZXRSdWxlTmFtZSgpLCAvLy9cbiAgICAgICAgICBub25UZXJtaW5hbE5vZGVCUnVsZU5hbWUgPSBub25UZXJtaW5hbE5vZGVCLmdldFJ1bGVOYW1lKCk7IC8vL1xuXG4gICAgaWYgKG5vblRlcm1pbmFsTm9kZUFSdWxlTmFtZSA9PT0gbm9uVGVybWluYWxOb2RlQlJ1bGVOYW1lKSB7XG4gICAgICBjb25zdCBub25UZXJtaW5hbE5vZGVBQ2hpbGROb2RlcyA9IG5vblRlcm1pbmFsTm9kZUEuZ2V0Q2hpbGROb2RlcygpLFxuICAgICAgICAgICAgbm9uVGVybWluYWxOb2RlQkNoaWxkTm9kZXMgPSBub25UZXJtaW5hbE5vZGVCLmdldENoaWxkTm9kZXMoKSxcbiAgICAgICAgICAgIG5vZGVzQSA9IG5vblRlcm1pbmFsTm9kZUFDaGlsZE5vZGVzLCAvLy9cbiAgICAgICAgICAgIG5vZGVzQiA9IG5vblRlcm1pbmFsTm9kZUJDaGlsZE5vZGVzLCAvLy9cbiAgICAgICAgICAgIG5vZGVzTWF0Y2ggPSB0aGlzLm1hdGNoTm9kZXMobm9kZXNBLCBub2Rlc0IsIGRlcHRoKTtcblxuICAgICAgbm9uVGVybWluYWxOb2RlTWF0Y2hlcyA9IG5vZGVzTWF0Y2g7IC8vL1xuICAgIH1cblxuICAgIHJldHVybiBub25UZXJtaW5hbE5vZGVNYXRjaGVzO1xuICB9XG59XG5cbmNvbnN0IG1hdGNoZXIgPSBuZXcgTWF0Y2hlcigpO1xuXG5leHBvcnQgZGVmYXVsdCBtYXRjaGVyO1xuIl0sIm5hbWVzIjpbIk1hdGNoZXIiLCJtYXRjaE5vZGUiLCJub2RlQSIsIm5vZGVCIiwiZGVwdGgiLCJJbmZpbml0eSIsIm5vZGVNYXRjaGVzIiwibm9kZUFUZXJtaW5hbE5vZGUiLCJpc1Rlcm1pbmFsTm9kZSIsIm5vZGVCVGVybWluYWxOb2RlIiwidGVybWluYWxOb2RlQSIsInRlcm1pbmFsTm9kZUIiLCJ0ZXJtaW5hbE5vZGVNYXRjaGVzIiwibWF0Y2hUZXJtaW5hbE5vZGUiLCJub25UZXJtaW5hbE5vZGVBIiwibm9uVGVybWluYWxOb2RlQiIsIm5vblRlcm1pbmFsTm9kZU1hdGNoZXMiLCJtYXRjaE5vblRlcm1pbmFsTm9kZSIsIm1hdGNoTm9kZXMiLCJub2Rlc0EiLCJub2Rlc0IiLCJub2Rlc01hdGNoIiwibm9kZXNBTGVuZ3RoIiwibGVuZ3RoIiwibm9kZXNCTGVuZ3RoIiwiZXZlcnkiLCJpbmRleCIsIm1hdGNoZXMiLCJtYXRjaCIsIm5vblRlcm1pbmFsTm9kZUFSdWxlTmFtZSIsImdldFJ1bGVOYW1lIiwibm9uVGVybWluYWxOb2RlQlJ1bGVOYW1lIiwibm9uVGVybWluYWxOb2RlQUNoaWxkTm9kZXMiLCJnZXRDaGlsZE5vZGVzIiwibm9uVGVybWluYWxOb2RlQkNoaWxkTm9kZXMiLCJtYXRjaGVyIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFtRkE7OztlQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBakZBLElBQUEsQUFBTUEsd0JBK0VILEFBL0VIO2FBQU1BO2dDQUFBQTs7a0JBQUFBOztZQUNKQyxLQUFBQTttQkFBQUEsU0FBQUEsVUFBVUMsS0FBSyxFQUFFQyxLQUFLLEVBQW9CO29CQUFsQkMsUUFBQUEsaUVBQVFDLFFBQVE7Z0JBQ3RDLElBQUlDLGNBQWMsS0FBSztnQkFFdkIsSUFBSUYsVUFBVSxHQUFHO29CQUNmRSxjQUFjLElBQUk7Z0JBQ3BCLE9BQU87b0JBQ0wsSUFBTUMsb0JBQW9CTCxNQUFNTSxjQUFjLElBQ3hDQyxvQkFBb0JOLE1BQU1LLGNBQWM7b0JBRTlDLElBQUlELHNCQUFzQkUsbUJBQW1CO3dCQUMzQyxJQUFJRixtQkFBbUI7NEJBQ3JCLElBQU1HLGdCQUFnQlIsT0FDaEJTLGdCQUFnQlIsT0FDaEJTLHNCQUFzQixJQUFJLENBQUNDLGlCQUFpQixDQUFDSCxlQUFlQzs0QkFFbEVMLGNBQWNNLHFCQUFzQixHQUFHO3dCQUN6QyxPQUFPOzRCQUNMLElBQU1FLG1CQUFtQlosT0FDbkJhLG1CQUFtQlosT0FDbkJhLHlCQUF5QixJQUFJLENBQUNDLG9CQUFvQixDQUFDSCxrQkFBa0JDLGtCQUFrQlg7NEJBRTdGRSxjQUFjVSx3QkFBd0IsR0FBRzt3QkFDM0MsQ0FBQztvQkFDSCxDQUFDO2dCQUNILENBQUM7Z0JBRUQsT0FBT1Y7WUFDVDs7O1lBRUFZLEtBQUFBO21CQUFBQSxTQUFBQSxXQUFXQyxNQUFNLEVBQUVDLE1BQU0sRUFBRWhCLEtBQUssRUFBRTs7Z0JBQ2hDLElBQUlpQixhQUFhLEtBQUs7Z0JBRXRCLElBQU1DLGVBQWVILE9BQU9JLE1BQU0sRUFDNUJDLGVBQWVKLE9BQU9HLE1BQU07Z0JBRWxDLElBQUlELGlCQUFpQkUsY0FBYztvQkFDakNwQjtvQkFFQWlCLGFBQWFGLE9BQU9NLEtBQUssQ0FBQyxTQUFDdkIsT0FBT3dCLE9BQVU7d0JBQzFDLElBQU12QixRQUFRaUIsTUFBTSxDQUFDTSxNQUFNLEVBQ3JCcEIsY0FBYyxNQUFLTCxTQUFTLENBQUNDLE9BQU9DLE9BQU9DO3dCQUVqRCxJQUFJRSxhQUFhOzRCQUNmLE9BQU8sSUFBSTt3QkFDYixDQUFDO29CQUNIO2dCQUNGLENBQUM7Z0JBRUQsT0FBT2U7WUFDVDs7O1lBRUFSLEtBQUFBO21CQUFBQSxTQUFBQSxrQkFBa0JILGFBQWEsRUFBRUMsYUFBYSxFQUFFUCxLQUFLLEVBQUU7Z0JBQ3JELElBQU11QixVQUFVakIsY0FBY2tCLEtBQUssQ0FBQ2pCLGdCQUM5QkMsc0JBQXNCZSxTQUFVLEdBQUc7Z0JBRXpDLE9BQU9mO1lBQ1Q7OztZQUVBSyxLQUFBQTttQkFBQUEsU0FBQUEscUJBQXFCSCxnQkFBZ0IsRUFBRUMsZ0JBQWdCLEVBQUVYLEtBQUssRUFBRTtnQkFDOUQsSUFBSVkseUJBQXlCLEtBQUs7Z0JBRWxDLElBQU1hLDJCQUEyQmYsaUJBQWlCZ0IsV0FBVyxJQUN2REMsMkJBQTJCaEIsaUJBQWlCZSxXQUFXLElBQUksR0FBRztnQkFFcEUsSUFBSUQsNkJBQTZCRSwwQkFBMEI7b0JBQ3pELElBQU1DLDZCQUE2QmxCLGlCQUFpQm1CLGFBQWEsSUFDM0RDLDZCQUE2Qm5CLGlCQUFpQmtCLGFBQWEsSUFDM0RkLFNBQVNhLDRCQUNUWixTQUFTYyw0QkFDVGIsYUFBYSxJQUFJLENBQUNILFVBQVUsQ0FBQ0MsUUFBUUMsUUFBUWhCO29CQUVuRFkseUJBQXlCSyxZQUFZLEdBQUc7Z0JBQzFDLENBQUM7Z0JBRUQsT0FBT0w7WUFDVDs7O1dBNUVJaEI7O0FBK0VOLElBQU1tQyxVQUFVLElBQUluQztJQUVwQixXQUFlbUMifQ==
package/src/matcher.js DELETED
@@ -1,84 +0,0 @@
1
- "use strict";
2
-
3
- class Matcher {
4
- matchNode(nodeA, nodeB, depth = Infinity) {
5
- let nodeMatches = false;
6
-
7
- if (depth === 0) {
8
- nodeMatches = true;
9
- } else {
10
- const nodeATerminalNode = nodeA.isTerminalNode(),
11
- nodeBTerminalNode = nodeB.isTerminalNode();
12
-
13
- if (nodeATerminalNode === nodeBTerminalNode) {
14
- if (nodeATerminalNode) {
15
- const terminalNodeA = nodeA, ///
16
- terminalNodeB = nodeB, ///
17
- terminalNodeMatches = this.matchTerminalNode(terminalNodeA, terminalNodeB);
18
-
19
- nodeMatches = terminalNodeMatches; ///
20
- } else {
21
- const nonTerminalNodeA = nodeA, ///
22
- nonTerminalNodeB = nodeB, ///
23
- nonTerminalNodeMatches = this.matchNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, depth);
24
-
25
- nodeMatches = nonTerminalNodeMatches; ///
26
- }
27
- }
28
- }
29
-
30
- return nodeMatches;
31
- }
32
-
33
- matchNodes(nodesA, nodesB, depth) {
34
- let nodesMatch = false;
35
-
36
- const nodesALength = nodesA.length,
37
- nodesBLength = nodesB.length;
38
-
39
- if (nodesALength === nodesBLength) {
40
- depth--;
41
-
42
- nodesMatch = nodesA.every((nodeA, index) => {
43
- const nodeB = nodesB[index],
44
- nodeMatches = this.matchNode(nodeA, nodeB, depth);
45
-
46
- if (nodeMatches) {
47
- return true;
48
- }
49
- })
50
- }
51
-
52
- return nodesMatch;
53
- }
54
-
55
- matchTerminalNode(terminalNodeA, terminalNodeB, depth) {
56
- const matches = terminalNodeA.match(terminalNodeB),
57
- terminalNodeMatches = matches; ///
58
-
59
- return terminalNodeMatches;
60
- }
61
-
62
- matchNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, depth) {
63
- let nonTerminalNodeMatches = false;
64
-
65
- const nonTerminalNodeARuleName = nonTerminalNodeA.getRuleName(), ///
66
- nonTerminalNodeBRuleName = nonTerminalNodeB.getRuleName(); ///
67
-
68
- if (nonTerminalNodeARuleName === nonTerminalNodeBRuleName) {
69
- const nonTerminalNodeAChildNodes = nonTerminalNodeA.getChildNodes(),
70
- nonTerminalNodeBChildNodes = nonTerminalNodeB.getChildNodes(),
71
- nodesA = nonTerminalNodeAChildNodes, ///
72
- nodesB = nonTerminalNodeBChildNodes, ///
73
- nodesMatch = this.matchNodes(nodesA, nodesB, depth);
74
-
75
- nonTerminalNodeMatches = nodesMatch; ///
76
- }
77
-
78
- return nonTerminalNodeMatches;
79
- }
80
- }
81
-
82
- const matcher = new Matcher();
83
-
84
- export default matcher;