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.
- package/lib/assignment.js +1 -1
- package/lib/axiom.js +1 -1
- package/lib/axiomLemmaTheoremConjecture.js +1 -1
- package/lib/combinator.js +1 -1
- package/lib/conclusion.js +1 -1
- package/lib/conjecture.js +1 -1
- package/lib/consequent.js +1 -1
- package/lib/constructor.js +1 -1
- package/lib/context/file.js +1 -1
- package/lib/context/metaproof.js +1 -1
- package/lib/context/proof.js +1 -1
- package/lib/context/release.js +1 -1
- package/lib/equality.js +3 -4
- package/lib/index.js +1 -1
- package/lib/label.js +1 -1
- package/lib/lemma.js +1 -1
- package/lib/log.js +1 -1
- package/lib/metaType.js +1 -1
- package/lib/metavariable.js +1 -1
- package/lib/mixins/file.js +1 -1
- package/lib/mixins/logging.js +1 -1
- package/lib/node/metastatement/bracketed.js +1 -1
- package/lib/node/statement/bracketed.js +1 -1
- package/lib/node/statement/combinator/bracketed.js +1 -1
- package/lib/node/statement/combinator/equality.js +1 -1
- package/lib/node/statement/equality.js +1 -1
- package/lib/ocmbinator/bracketed.js +1 -1
- package/lib/ocmbinator/equality.js +1 -1
- package/lib/permutationsMatrix.js +1 -1
- package/lib/premise.js +1 -1
- package/lib/rule.js +1 -1
- package/lib/step/metaproof.js +1 -1
- package/lib/step/proof.js +1 -1
- package/lib/substitution/metastatementForMetavariable.js +4 -11
- package/lib/substitution/statementForMetavariable.js +4 -11
- package/lib/substitution/termForVariable.js +2 -9
- package/lib/supposition.js +1 -1
- package/lib/theorem.js +1 -1
- package/lib/type.js +1 -1
- package/lib/utilities/array.js +1 -1
- package/lib/utilities/customGrammar.js +1 -1
- package/lib/utilities/metaproof.js +9 -10
- package/lib/utilities/node.js +1 -1
- package/lib/utilities/permutations.js +1 -1
- package/lib/utilities/proof.js +9 -10
- package/lib/utilities/query.js +1 -1
- package/lib/utilities/releaseContext.js +1 -1
- package/lib/utilities/string.js +1 -1
- package/lib/utilities/tokens.js +1 -1
- package/lib/variable.js +1 -1
- package/lib/verifier/metastatementForMetavariable/conclusion.js +1 -1
- package/lib/verifier/metastatementForMetavariable/premise.js +1 -1
- package/lib/verifier/metastatementForMetavariable.js +1 -1
- package/lib/verifier/statementForMetavariable/conclusion.js +1 -1
- package/lib/verifier/statementForMetavariable/premise.js +1 -1
- package/lib/verifier/statementForMetavariable.js +1 -1
- package/lib/verifier/termForVariable/consequent.js +1 -1
- package/lib/verifier/termForVariable/supposition.js +1 -1
- package/lib/verifier/termForVariable.js +1 -1
- package/lib/verifier.js +1 -1
- package/lib/verify/assertion/type.js +1 -1
- package/lib/verify/axiom.js +1 -1
- package/lib/verify/conclusion.js +1 -1
- package/lib/verify/conjecture.js +1 -1
- package/lib/verify/consequent.js +1 -1
- package/lib/verify/declaration/combinator.js +1 -1
- package/lib/verify/declaration/constructor.js +1 -1
- package/lib/verify/declaration/metavariable.js +1 -1
- package/lib/verify/declaration/topLevel.js +1 -1
- package/lib/verify/declaration/type.js +1 -1
- package/lib/verify/declaration/variable.js +1 -1
- package/lib/verify/derivation.js +1 -1
- package/lib/verify/file.js +1 -1
- package/lib/verify/files.js +1 -1
- package/lib/verify/label.js +1 -1
- package/lib/verify/labels.js +1 -1
- package/lib/verify/lemma.js +1 -1
- package/lib/verify/metastatement/qualified.js +1 -1
- package/lib/verify/metastatement/unqualified.js +1 -1
- package/lib/verify/metastatement.js +1 -1
- package/lib/verify/metavariable.js +1 -1
- package/lib/verify/premise.js +1 -1
- package/lib/verify/proof.js +3 -4
- package/lib/verify/release.js +1 -1
- package/lib/verify/rule.js +1 -1
- package/lib/verify/ruleDerivation.js +1 -1
- package/lib/verify/ruleProof.js +3 -4
- package/lib/verify/statement/qualified.js +1 -1
- package/lib/verify/statement/unqualified.js +1 -1
- package/lib/verify/statement.js +1 -1
- package/lib/verify/statementAsCombinator.js +1 -1
- package/lib/verify/supposition.js +1 -1
- package/lib/verify/term.js +1 -1
- package/lib/verify/termAsConstructor.js +1 -1
- package/lib/verify/theorem.js +1 -1
- package/lib/verify/type.js +1 -1
- package/lib/verify/typeInference.js +1 -1
- package/lib/verify/variable.js +1 -1
- package/package.json +3 -3
- package/src/equality.js +3 -6
- package/src/substitution/metastatementForMetavariable.js +3 -12
- package/src/substitution/statementForMetavariable.js +3 -12
- package/src/substitution/termForVariable.js +1 -7
- package/src/utilities/metaproof.js +9 -18
- package/src/utilities/proof.js +9 -18
- package/src/verify/proof.js +2 -5
- package/src/verify/ruleProof.js +2 -5
- package/lib/matcher.js +0 -100
- package/src/matcher.js +0 -84
package/src/utilities/proof.js
CHANGED
|
@@ -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
|
|
16
|
-
nodeB = statementNodeB, ///
|
|
17
|
-
nonTerminalNodeMatches = matcher.matchNode(nodeA, nodeB);
|
|
14
|
+
const statementNodeMatches = statementNodeA.match(statementNodeB);
|
|
18
15
|
|
|
19
|
-
statementMatchesModuloBrackets =
|
|
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
|
|
27
|
-
nodeB = statementNodeB, ///
|
|
28
|
-
nodeMatches = matcher.matchNode(nodeA, nodeB);
|
|
23
|
+
const bracketedStatementChildNodeAMatchStatementNodeB = bracketedStatementChildNodeA.match(statementNodeB);
|
|
29
24
|
|
|
30
|
-
statementMatchesModuloBrackets =
|
|
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
|
|
39
|
-
nodeB = bracketedStatementChildNodeB, ///
|
|
40
|
-
nodeMatches = matcher.matchNode(nodeA, nodeB);
|
|
33
|
+
const statementNodeAMatchBracketedStatementChildNodeB = statementNodeA.match(bracketedStatementChildNodeB);
|
|
41
34
|
|
|
42
|
-
statementMatchesModuloBrackets =
|
|
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
|
|
53
|
-
|
|
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 (
|
|
48
|
+
if (statementNodeMatchBracketedStatementNode) {
|
|
58
49
|
bracketedStatementChildNode = bracketedStatementChildNodeQuery(statementNode);
|
|
59
50
|
}
|
|
60
51
|
|
package/src/verify/proof.js
CHANGED
|
@@ -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
|
-
|
|
25
|
-
nodeB = conclusionStatementNode, ///
|
|
26
|
-
nodeMatches = matcher.matchNode(nodeA, nodeB);
|
|
23
|
+
statementNodeMatchConclusionStatementNode = statementNode.match(conclusionStatementNode);
|
|
27
24
|
|
|
28
|
-
proofVerified =
|
|
25
|
+
proofVerified = statementNodeMatchConclusionStatementNode; ///
|
|
29
26
|
}
|
|
30
27
|
|
|
31
28
|
return proofVerified;
|
package/src/verify/ruleProof.js
CHANGED
|
@@ -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
|
-
|
|
25
|
-
nodeB = conclusionMetastatementNode, ///
|
|
26
|
-
nodeMatches = matcher.matchNode(nodeA, nodeB);
|
|
23
|
+
metastatementNodeMatchConclusionMetastatementNode = metastatementNode.match(conclusionMetastatementNode);
|
|
27
24
|
|
|
28
|
-
ruleProofVerified =
|
|
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;
|