occam-languages 0.0.205 → 0.0.207
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/index.js +5 -1
- package/lib/pass/equivalence.js +13 -16
- package/lib/pass/forwardZip.js +96 -0
- package/lib/pass/zip.js +14 -17
- package/lib/utilities/pass.js +19 -11
- package/package.json +1 -1
- package/src/index.js +1 -0
- package/src/pass/equivalence.js +17 -24
- package/src/pass/forwardZip.js +141 -0
- package/src/pass/zip.js +20 -26
- package/src/utilities/pass.js +25 -6
package/lib/index.js
CHANGED
|
@@ -30,6 +30,9 @@ _export(exports, {
|
|
|
30
30
|
get ForwardPass () {
|
|
31
31
|
return _forward.default;
|
|
32
32
|
},
|
|
33
|
+
get ForwardZipPass () {
|
|
34
|
+
return _forwardZip.default;
|
|
35
|
+
},
|
|
33
36
|
get Log () {
|
|
34
37
|
return _log.default;
|
|
35
38
|
},
|
|
@@ -75,6 +78,7 @@ const _zip = /*#__PURE__*/ _interop_require_default(require("./pass/zip"));
|
|
|
75
78
|
const _async = /*#__PURE__*/ _interop_require_default(require("./pass/async"));
|
|
76
79
|
const _simple = /*#__PURE__*/ _interop_require_default(require("./pass/simple"));
|
|
77
80
|
const _forward = /*#__PURE__*/ _interop_require_default(require("./pass/forward"));
|
|
81
|
+
const _forwardZip = /*#__PURE__*/ _interop_require_default(require("./pass/forwardZip"));
|
|
78
82
|
const _equivalence = /*#__PURE__*/ _interop_require_default(require("./pass/equivalence"));
|
|
79
83
|
const _node = /*#__PURE__*/ _interop_require_default(require("./utilities/node"));
|
|
80
84
|
const _query = /*#__PURE__*/ _interop_require_default(require("./utilities/query"));
|
|
@@ -88,4 +92,4 @@ function _interop_require_default(obj) {
|
|
|
88
92
|
};
|
|
89
93
|
}
|
|
90
94
|
|
|
91
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
95
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBMb2cgfSBmcm9tIFwiLi9sb2dcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgRWxlbWVudCB9IGZyb20gXCIuL2VsZW1lbnRcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgQ29udGV4dCB9IGZyb20gXCIuL2NvbnRleHRcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgQnJlYWtQb2ludCB9IGZyb20gXCIuL2JyZWFrUG9pbnRcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgRmlsZUNvbnRleHQgfSBmcm9tIFwiLi9jb250ZXh0L2ZpbGVcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgUmVsZWFzZUNvbnRleHQgfSBmcm9tIFwiLi9jb250ZXh0L3JlbGVhc2VcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgTm9uVGVybWluYWxOb2RlIH0gZnJvbSBcIi4vbm9uVGVybWluYWxOb2RlXCI7XG5cbmV4cG9ydCB7IGRlZmF1bHQgYXMgWmlwUGFzcyB9IGZyb20gXCIuL3Bhc3MvemlwXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIEFzeW5jUGFzcyB9IGZyb20gXCIuL3Bhc3MvYXN5bmNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgU2ltcGxlUGFzcyB9IGZyb20gXCIuL3Bhc3Mvc2ltcGxlXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIEZvcndhcmRQYXNzIH0gZnJvbSBcIi4vcGFzcy9mb3J3YXJkXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIEZvcndhcmRaaXBQYXNzIH0gZnJvbSBcIi4vcGFzcy9mb3J3YXJkWmlwXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIEVxdWl2YWxlbmNlUGFzcyB9IGZyb20gXCIuL3Bhc3MvZXF1aXZhbGVuY2VcIjtcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBub2RlVXRpbGl0aWVzIH0gZnJvbSBcIi4vdXRpbGl0aWVzL25vZGVcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgcXVlcnlVdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvcXVlcnlcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZmlsZUNvbnRleHRVdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvZmlsZUNvbnRleHRcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdmVyaWZpY2F0aW9uVXRpbGl0aWVzIH0gZnJvbSBcIi4vdXRpbGl0aWVzL3ZlcmlmaWNhdGlvblwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBhc3luY2hyb25vdXNVdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvYXN5bmNocm9ub3VzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHJlbGVhc2VDb250ZXh0VXRpbGl0aWVzIH0gZnJvbSBcIi4vdXRpbGl0aWVzL3JlbGVhc2VDb250ZXh0XCI7XG4iXSwibmFtZXMiOlsiQXN5bmNQYXNzIiwiQnJlYWtQb2ludCIsIkNvbnRleHQiLCJFbGVtZW50IiwiRXF1aXZhbGVuY2VQYXNzIiwiRmlsZUNvbnRleHQiLCJGb3J3YXJkUGFzcyIsIkZvcndhcmRaaXBQYXNzIiwiTG9nIiwiTm9uVGVybWluYWxOb2RlIiwiUmVsZWFzZUNvbnRleHQiLCJTaW1wbGVQYXNzIiwiWmlwUGFzcyIsImFzeW5jaHJvbm91c1V0aWxpdGllcyIsImZpbGVDb250ZXh0VXRpbGl0aWVzIiwibm9kZVV0aWxpdGllcyIsInF1ZXJ5VXRpbGl0aWVzIiwicmVsZWFzZUNvbnRleHRVdGlsaXRpZXMiLCJ2ZXJpZmljYXRpb25VdGlsaXRpZXMiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQVdvQkE7ZUFBQUEsY0FBUzs7UUFOVEM7ZUFBQUEsbUJBQVU7O1FBRFZDO2VBQUFBLGdCQUFPOztRQURQQztlQUFBQSxnQkFBTzs7UUFZUEM7ZUFBQUEsb0JBQWU7O1FBVGZDO2VBQUFBLGFBQVc7O1FBT1hDO2VBQUFBLGdCQUFXOztRQUNYQztlQUFBQSxtQkFBYzs7UUFaZEM7ZUFBQUEsWUFBRzs7UUFNSEM7ZUFBQUEsd0JBQWU7O1FBRGZDO2VBQUFBLGdCQUFjOztRQUtkQztlQUFBQSxlQUFVOztRQUZWQztlQUFBQSxZQUFPOztRQVdQQztlQUFBQSxxQkFBcUI7O1FBRnJCQztlQUFBQSxvQkFBb0I7O1FBRnBCQztlQUFBQSxhQUFhOztRQUNiQztlQUFBQSxjQUFjOztRQUlkQztlQUFBQSx1QkFBdUI7O1FBRnZCQztlQUFBQSxxQkFBcUI7Ozs0REFsQlY7Z0VBQ0k7Z0VBQ0E7bUVBQ0c7NkRBQ0M7Z0VBQ0c7d0VBQ0M7NERBRVI7OERBQ0U7K0RBQ0M7Z0VBQ0M7bUVBQ0c7b0VBQ0M7NkRBRUY7OERBQ0M7b0VBQ007cUVBQ0M7cUVBQ0E7dUVBQ0UifQ==
|
package/lib/pass/equivalence.js
CHANGED
|
@@ -17,19 +17,13 @@ class EquivalencePass {
|
|
|
17
17
|
return success;
|
|
18
18
|
}
|
|
19
19
|
descend(leftChildNodes, rightChildNodes, ...remainingArguments) {
|
|
20
|
-
let descended
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
descended = leftChildNodes.every((leftChildNode, index)=>{
|
|
26
|
-
const rightChildNode = rightChildNodes[index], leftNode = leftChildNode, rightNode = rightChildNode, visited = this.visitNode(leftNode, rightNode, ...remainingArguments);
|
|
27
|
-
if (visited) {
|
|
28
|
-
return true;
|
|
29
|
-
}
|
|
30
|
-
});
|
|
20
|
+
let descended;
|
|
21
|
+
descended = leftChildNodes.every((leftChildNode, index)=>{
|
|
22
|
+
const rightChildNode = rightChildNodes[index], leftNode = leftChildNode, rightNode = rightChildNode, visited = this.visitNode(leftNode, rightNode, ...remainingArguments);
|
|
23
|
+
if (visited) {
|
|
24
|
+
return true;
|
|
31
25
|
}
|
|
32
|
-
}
|
|
26
|
+
});
|
|
33
27
|
return descended;
|
|
34
28
|
}
|
|
35
29
|
visitNode(leftNode, rightNode, ...remainingArguments) {
|
|
@@ -63,9 +57,12 @@ class EquivalencePass {
|
|
|
63
57
|
let visited = false;
|
|
64
58
|
const leftNonTerminalNodeRuleName = leftNonTerminalNode.getRuleName(), rightNonTerminalNodeRuleName = rightNonTerminalNode.getRuleName(); ///
|
|
65
59
|
if (leftNonTerminalNodeRuleName === rightNonTerminalNodeRuleName) {
|
|
66
|
-
const leftNonTerminalNodeChildNodes = leftNonTerminalNode.getChildNodes(), rightNonTerminalNodeChildNodes = rightNonTerminalNode.getChildNodes(), leftChildNodes = leftNonTerminalNodeChildNodes, rightChildNodes = rightNonTerminalNodeChildNodes,
|
|
67
|
-
if (
|
|
68
|
-
|
|
60
|
+
const leftNonTerminalNodeChildNodes = leftNonTerminalNode.getChildNodes(), rightNonTerminalNodeChildNodes = rightNonTerminalNode.getChildNodes(), leftChildNodes = leftNonTerminalNodeChildNodes, rightChildNodes = rightNonTerminalNodeChildNodes, childNodesCongruent = (0, _pass.areChildNodesCongruent)(leftChildNodes, rightChildNodes);
|
|
61
|
+
if (childNodesCongruent) {
|
|
62
|
+
const descended = this.descend(leftChildNodes, rightChildNodes, ...remainingArguments);
|
|
63
|
+
if (descended) {
|
|
64
|
+
visited = true;
|
|
65
|
+
}
|
|
69
66
|
}
|
|
70
67
|
}
|
|
71
68
|
return visited;
|
|
@@ -85,4 +82,4 @@ class EquivalencePass {
|
|
|
85
82
|
}
|
|
86
83
|
}
|
|
87
84
|
|
|
88
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
85
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXNzL2VxdWl2YWxlbmNlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBub25UZXJtaW5hbE5vZGVRdWVyeSwgYXJlQ2hpbGROb2Rlc0NvbmdydWVudCB9IGZyb20gXCIuLi91dGlsaXRpZXMvcGFzc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFcXVpdmFsZW5jZVBhc3Mge1xuICBydW4obGVmdE5vZGUsIHJpZ2h0Tm9kZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XG4gICAgbGV0IHN1Y2Nlc3M7XG5cbiAgICBjb25zdCB2aXNpdGVkID0gdGhpcy52aXNpdE5vZGUobGVmdE5vZGUsIHJpZ2h0Tm9kZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKTtcblxuICAgIHN1Y2Nlc3MgPSB2aXNpdGVkOyAgLy8vXG5cbiAgICByZXR1cm4gc3VjY2VzcztcbiAgfVxuXG4gIGRlc2NlbmQobGVmdENoaWxkTm9kZXMsIHJpZ2h0Q2hpbGROb2RlcywgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XG4gICAgbGV0IGRlc2NlbmRlZDtcblxuICAgIGRlc2NlbmRlZCA9IGxlZnRDaGlsZE5vZGVzLmV2ZXJ5KChsZWZ0Q2hpbGROb2RlLCBpbmRleCkgPT4ge1xuICAgICAgY29uc3QgcmlnaHRDaGlsZE5vZGUgPSByaWdodENoaWxkTm9kZXNbaW5kZXhdLFxuICAgICAgICAgICAgbGVmdE5vZGUgPSBsZWZ0Q2hpbGROb2RlLCAvLy9cbiAgICAgICAgICAgIHJpZ2h0Tm9kZSA9IHJpZ2h0Q2hpbGROb2RlLCAvLy9cbiAgICAgICAgICAgIHZpc2l0ZWQgPSB0aGlzLnZpc2l0Tm9kZShsZWZ0Tm9kZSwgcmlnaHROb2RlLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpO1xuXG4gICAgICBpZiAodmlzaXRlZCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBkZXNjZW5kZWQ7XG4gIH1cblxuICB2aXNpdE5vZGUobGVmdE5vZGUsIHJpZ2h0Tm9kZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XG4gICAgbGV0IHZpc2l0ZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0IGxlZnROb2RlVGVybWluYWxOb2RlID0gbGVmdE5vZGUuaXNUZXJtaW5hbE5vZGUoKSxcbiAgICAgICAgICByaWdodE5vZGVUZXJtaW5hbE5vZGUgPSByaWdodE5vZGUuaXNUZXJtaW5hbE5vZGUoKSxcbiAgICAgICAgICBsZWZ0Tm9kZU5vblRlcm1pbmFsTm9kZSA9IGxlZnROb2RlLmlzTm9uVGVybWluYWxOb2RlKCksXG4gICAgICAgICAgcmlnaHROb2RlTm9uVGVybWluYWxOb2RlID0gcmlnaHROb2RlLmlzTm9uVGVybWluYWxOb2RlKCk7XG5cbiAgICBpZiAoZmFsc2UpIHtcbiAgICAgIC8vL1xuICAgIH0gZWxzZSBpZiAobGVmdE5vZGVUZXJtaW5hbE5vZGUgJiYgcmlnaHROb2RlVGVybWluYWxOb2RlKSB7XG4gICAgICBjb25zdCBsZWZ0VGVybWluYWxOb2RlID0gbGVmdE5vZGUsICAvLy9cbiAgICAgICAgICAgIHJpZ2h0VGVybWluYWxOb2RlID0gcmlnaHROb2RlOyAgLy8vXG5cbiAgICAgIHZpc2l0ZWQgPSB0aGlzLnZpc2l0VGVybWluYWxOb2RlKGxlZnRUZXJtaW5hbE5vZGUsIHJpZ2h0VGVybWluYWxOb2RlLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpO1xuICAgIH0gZWxzZSBpZiAobGVmdE5vZGVOb25UZXJtaW5hbE5vZGUgJiYgcmlnaHROb2RlTm9uVGVybWluYWxOb2RlKSB7XG4gICAgICBjb25zdCBsZWZ0Tm9uVGVybWluYWxOb2RlID0gbGVmdE5vZGUsICAvLy9cbiAgICAgICAgICAgIHJpZ2h0Tm9uVGVybWluYWxOb2RlID0gcmlnaHROb2RlOyAvLy9cblxuICAgICAgdmlzaXRlZCA9IHRoaXMudmlzaXROb25UZXJtaW5hbE5vZGUobGVmdE5vblRlcm1pbmFsTm9kZSwgcmlnaHROb25UZXJtaW5hbE5vZGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZpc2l0ZWQ7XG4gIH1cblxuICB2aXNpdFRlcm1pbmFsTm9kZShsZWZ0VGVybWluYWxOb2RlLCByaWdodFRlcm1pbmFsTm9kZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7IC8vL1xuICAgIGxldCB2aXNpdGVkO1xuXG4gICAgdmlzaXRlZCA9IHRydWU7XG5cbiAgICByZXR1cm4gdmlzaXRlZDtcbiAgfVxuXG4gIHZpc2l0Tm9uVGVybWluYWxOb2RlKGxlZnROb25UZXJtaW5hbE5vZGUsIHJpZ2h0Tm9uVGVybWluYWxOb2RlLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgICBsZXQgdmlzaXRlZCA9IGZhbHNlO1xuXG4gICAgbGV0IHsgbWFwcyB9ID0gdGhpcy5jb25zdHJ1Y3RvcjtcblxuICAgIG1hcHMgPSBbIC8vL1xuICAgICAgLi4ubWFwcyxcbiAgICAgIHtcbiAgICAgICAgbGVmdE5vZGVRdWVyeTogbm9uVGVybWluYWxOb2RlUXVlcnksXG4gICAgICAgIHJpZ2h0Tm9kZVF1ZXJ5OiBub25UZXJtaW5hbE5vZGVRdWVyeSxcbiAgICAgICAgcnVuOiAobGVmdE5vZGUsIHJpZ2h0Tm9kZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKSA9PiB7XG4gICAgICAgICAgbGV0IHZpc2l0ZWQgPSBmYWxzZTtcblxuICAgICAgICAgIGNvbnN0IGxlZnROb25UZXJtaW5hbE5vZGVSdWxlTmFtZSA9IGxlZnROb25UZXJtaW5hbE5vZGUuZ2V0UnVsZU5hbWUoKSwgLy8vXG4gICAgICAgICAgICAgICAgcmlnaHROb25UZXJtaW5hbE5vZGVSdWxlTmFtZSA9IHJpZ2h0Tm9uVGVybWluYWxOb2RlLmdldFJ1bGVOYW1lKCk7IC8vL1xuXG4gICAgICAgICAgaWYgKGxlZnROb25UZXJtaW5hbE5vZGVSdWxlTmFtZSA9PT0gcmlnaHROb25UZXJtaW5hbE5vZGVSdWxlTmFtZSkge1xuICAgICAgICAgICAgY29uc3QgbGVmdE5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZXMgPSBsZWZ0Tm9uVGVybWluYWxOb2RlLmdldENoaWxkTm9kZXMoKSxcbiAgICAgICAgICAgICAgICAgIHJpZ2h0Tm9uVGVybWluYWxOb2RlQ2hpbGROb2RlcyA9IHJpZ2h0Tm9uVGVybWluYWxOb2RlLmdldENoaWxkTm9kZXMoKSxcbiAgICAgICAgICAgICAgICAgIGxlZnRDaGlsZE5vZGVzID0gbGVmdE5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZXMsIC8vL1xuICAgICAgICAgICAgICAgICAgcmlnaHRDaGlsZE5vZGVzID0gcmlnaHROb25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzLCAvLy9cbiAgICAgICAgICAgICAgICAgIGNoaWxkTm9kZXNDb25ncnVlbnQgPSBhcmVDaGlsZE5vZGVzQ29uZ3J1ZW50KGxlZnRDaGlsZE5vZGVzLCByaWdodENoaWxkTm9kZXMpO1xuXG4gICAgICAgICAgICBpZiAoY2hpbGROb2Rlc0NvbmdydWVudCkge1xuICAgICAgICAgICAgICBjb25zdCBkZXNjZW5kZWQgPSB0aGlzLmRlc2NlbmQobGVmdENoaWxkTm9kZXMsIHJpZ2h0Q2hpbGROb2RlcywgLi4ucmVtYWluaW5nQXJndW1lbnRzKTtcblxuICAgICAgICAgICAgICBpZiAoZGVzY2VuZGVkKSB7XG4gICAgICAgICAgICAgICAgdmlzaXRlZCA9IHRydWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdmlzaXRlZDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIF1cblxuICAgIG1hcHMuc29tZSgobWFwKSA9PiB7XG4gICAgICBjb25zdCB7IGxlZnROb2RlUXVlcnksIHJpZ2h0Tm9kZVF1ZXJ5LCBydW4gfSA9IG1hcDtcblxuICAgICAgY29uc3QgbGVmdE5vZGUgPSBsZWZ0Tm9kZVF1ZXJ5KGxlZnROb25UZXJtaW5hbE5vZGUpLCAgLy8vXG4gICAgICAgICAgICByaWdodE5vZGUgPSByaWdodE5vZGVRdWVyeShyaWdodE5vblRlcm1pbmFsTm9kZSk7ICAvLy9cblxuICAgICAgaWYgKChsZWZ0Tm9kZSAhPT0gbnVsbCkgJiYgKHJpZ2h0Tm9kZSAhPT0gbnVsbCkpIHtcbiAgICAgICAgY29uc3Qgc3VjY2VzcyA9IHJ1bihsZWZ0Tm9kZSwgcmlnaHROb2RlLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpO1xuXG4gICAgICAgIHZpc2l0ZWQgPSBzdWNjZXNzOyAgLy8vXG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdmlzaXRlZDtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIkVxdWl2YWxlbmNlUGFzcyIsInJ1biIsImxlZnROb2RlIiwicmlnaHROb2RlIiwicmVtYWluaW5nQXJndW1lbnRzIiwic3VjY2VzcyIsInZpc2l0ZWQiLCJ2aXNpdE5vZGUiLCJkZXNjZW5kIiwibGVmdENoaWxkTm9kZXMiLCJyaWdodENoaWxkTm9kZXMiLCJkZXNjZW5kZWQiLCJldmVyeSIsImxlZnRDaGlsZE5vZGUiLCJpbmRleCIsInJpZ2h0Q2hpbGROb2RlIiwibGVmdE5vZGVUZXJtaW5hbE5vZGUiLCJpc1Rlcm1pbmFsTm9kZSIsInJpZ2h0Tm9kZVRlcm1pbmFsTm9kZSIsImxlZnROb2RlTm9uVGVybWluYWxOb2RlIiwiaXNOb25UZXJtaW5hbE5vZGUiLCJyaWdodE5vZGVOb25UZXJtaW5hbE5vZGUiLCJsZWZ0VGVybWluYWxOb2RlIiwicmlnaHRUZXJtaW5hbE5vZGUiLCJ2aXNpdFRlcm1pbmFsTm9kZSIsImxlZnROb25UZXJtaW5hbE5vZGUiLCJyaWdodE5vblRlcm1pbmFsTm9kZSIsInZpc2l0Tm9uVGVybWluYWxOb2RlIiwibWFwcyIsImxlZnROb2RlUXVlcnkiLCJub25UZXJtaW5hbE5vZGVRdWVyeSIsInJpZ2h0Tm9kZVF1ZXJ5IiwibGVmdE5vblRlcm1pbmFsTm9kZVJ1bGVOYW1lIiwiZ2V0UnVsZU5hbWUiLCJyaWdodE5vblRlcm1pbmFsTm9kZVJ1bGVOYW1lIiwibGVmdE5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZXMiLCJnZXRDaGlsZE5vZGVzIiwicmlnaHROb25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzIiwiY2hpbGROb2Rlc0NvbmdydWVudCIsImFyZUNoaWxkTm9kZXNDb25ncnVlbnQiLCJzb21lIiwibWFwIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFJQTs7O2VBQXFCQTs7O3NCQUZ3QztBQUU5QyxNQUFNQTtJQUNuQkMsSUFBSUMsUUFBUSxFQUFFQyxTQUFTLEVBQUUsR0FBR0Msa0JBQWtCLEVBQUU7UUFDOUMsSUFBSUM7UUFFSixNQUFNQyxVQUFVLElBQUksQ0FBQ0MsU0FBUyxDQUFDTCxVQUFVQyxjQUFjQztRQUV2REMsVUFBVUMsU0FBVSxHQUFHO1FBRXZCLE9BQU9EO0lBQ1Q7SUFFQUcsUUFBUUMsY0FBYyxFQUFFQyxlQUFlLEVBQUUsR0FBR04sa0JBQWtCLEVBQUU7UUFDOUQsSUFBSU87UUFFSkEsWUFBWUYsZUFBZUcsS0FBSyxDQUFDLENBQUNDLGVBQWVDO1lBQy9DLE1BQU1DLGlCQUFpQkwsZUFBZSxDQUFDSSxNQUFNLEVBQ3ZDWixXQUFXVyxlQUNYVixZQUFZWSxnQkFDWlQsVUFBVSxJQUFJLENBQUNDLFNBQVMsQ0FBQ0wsVUFBVUMsY0FBY0M7WUFFdkQsSUFBSUUsU0FBUztnQkFDWCxPQUFPO1lBQ1Q7UUFDRjtRQUVBLE9BQU9LO0lBQ1Q7SUFFQUosVUFBVUwsUUFBUSxFQUFFQyxTQUFTLEVBQUUsR0FBR0Msa0JBQWtCLEVBQUU7UUFDcEQsSUFBSUUsVUFBVTtRQUVkLE1BQU1VLHVCQUF1QmQsU0FBU2UsY0FBYyxJQUM5Q0Msd0JBQXdCZixVQUFVYyxjQUFjLElBQ2hERSwwQkFBMEJqQixTQUFTa0IsaUJBQWlCLElBQ3BEQywyQkFBMkJsQixVQUFVaUIsaUJBQWlCO1FBRTVELElBQUksT0FBTztRQUNULEdBQUc7UUFDTCxPQUFPLElBQUlKLHdCQUF3QkUsdUJBQXVCO1lBQ3hELE1BQU1JLG1CQUFtQnBCLFVBQ25CcUIsb0JBQW9CcEIsV0FBWSxHQUFHO1lBRXpDRyxVQUFVLElBQUksQ0FBQ2tCLGlCQUFpQixDQUFDRixrQkFBa0JDLHNCQUFzQm5CO1FBQzNFLE9BQU8sSUFBSWUsMkJBQTJCRSwwQkFBMEI7WUFDOUQsTUFBTUksc0JBQXNCdkIsVUFDdEJ3Qix1QkFBdUJ2QixXQUFXLEdBQUc7WUFFM0NHLFVBQVUsSUFBSSxDQUFDcUIsb0JBQW9CLENBQUNGLHFCQUFxQkMseUJBQXlCdEI7UUFDcEY7UUFFQSxPQUFPRTtJQUNUO0lBRUFrQixrQkFBa0JGLGdCQUFnQixFQUFFQyxpQkFBaUIsRUFBRSxHQUFHbkIsa0JBQWtCLEVBQUU7UUFDNUUsSUFBSUU7UUFFSkEsVUFBVTtRQUVWLE9BQU9BO0lBQ1Q7SUFFQXFCLHFCQUFxQkYsbUJBQW1CLEVBQUVDLG9CQUFvQixFQUFFLEdBQUd0QixrQkFBa0IsRUFBRTtRQUNyRixJQUFJRSxVQUFVO1FBRWQsSUFBSSxFQUFFc0IsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLFdBQVc7UUFFL0JBLE9BQU87ZUFDRkE7WUFDSDtnQkFDRUMsZUFBZUMsMEJBQW9CO2dCQUNuQ0MsZ0JBQWdCRCwwQkFBb0I7Z0JBQ3BDN0IsS0FBSyxDQUFDQyxVQUFVQyxXQUFXLEdBQUdDO29CQUM1QixJQUFJRSxVQUFVO29CQUVkLE1BQU0wQiw4QkFBOEJQLG9CQUFvQlEsV0FBVyxJQUM3REMsK0JBQStCUixxQkFBcUJPLFdBQVcsSUFBSSxHQUFHO29CQUU1RSxJQUFJRCxnQ0FBZ0NFLDhCQUE4Qjt3QkFDaEUsTUFBTUMsZ0NBQWdDVixvQkFBb0JXLGFBQWEsSUFDakVDLGlDQUFpQ1gscUJBQXFCVSxhQUFhLElBQ25FM0IsaUJBQWlCMEIsK0JBQ2pCekIsa0JBQWtCMkIsZ0NBQ2xCQyxzQkFBc0JDLElBQUFBLDRCQUFzQixFQUFDOUIsZ0JBQWdCQzt3QkFFbkUsSUFBSTRCLHFCQUFxQjs0QkFDdkIsTUFBTTNCLFlBQVksSUFBSSxDQUFDSCxPQUFPLENBQUNDLGdCQUFnQkMsb0JBQW9CTjs0QkFFbkUsSUFBSU8sV0FBVztnQ0FDYkwsVUFBVTs0QkFDWjt3QkFDRjtvQkFDRjtvQkFFQSxPQUFPQTtnQkFDVDtZQUNGO1NBQ0Q7UUFFRHNCLEtBQUtZLElBQUksQ0FBQyxDQUFDQztZQUNULE1BQU0sRUFBRVosYUFBYSxFQUFFRSxjQUFjLEVBQUU5QixHQUFHLEVBQUUsR0FBR3dDO1lBRS9DLE1BQU12QyxXQUFXMkIsY0FBY0osc0JBQ3pCdEIsWUFBWTRCLGVBQWVMLHVCQUF3QixHQUFHO1lBRTVELElBQUksQUFBQ3hCLGFBQWEsUUFBVUMsY0FBYyxNQUFPO2dCQUMvQyxNQUFNRSxVQUFVSixJQUFJQyxVQUFVQyxjQUFjQztnQkFFNUNFLFVBQVVELFNBQVUsR0FBRztnQkFFdkIsT0FBTztZQUNUO1FBQ0Y7UUFFQSxPQUFPQztJQUNUO0FBQ0YifQ==
|
|
@@ -0,0 +1,96 @@
|
|
|
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 ForwardZipPass;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _pass = require("../utilities/pass");
|
|
12
|
+
class ForwardZipPass {
|
|
13
|
+
run(generalNode, specificNode, ...remainingArguments) {
|
|
14
|
+
let success;
|
|
15
|
+
const visited = this.visitNode(generalNode, specificNode, ...remainingArguments);
|
|
16
|
+
success = visited; ///
|
|
17
|
+
return success;
|
|
18
|
+
}
|
|
19
|
+
descend(index, generalChildNodes, specificChildNodes, ...remainingArguments) {
|
|
20
|
+
let descendedForward = false;
|
|
21
|
+
const descendForward = remainingArguments.pop(), generalChildNodesLength = generalChildNodes.length;
|
|
22
|
+
if (index === generalChildNodesLength) {
|
|
23
|
+
descendedForward = descendForward();
|
|
24
|
+
} else {
|
|
25
|
+
const generalChildNode = generalChildNodes[index], specificChildNode = specificChildNodes[index], generalNode = generalChildNode, specificNode = specificChildNode, visited = this.visitNode(generalNode, specificNode, ...remainingArguments, ()=>{
|
|
26
|
+
remainingArguments.push(descendForward);
|
|
27
|
+
const aheadIndex = index + 1, descendedForward = this.descend(aheadIndex, generalChildNodes, specificChildNodes, ...remainingArguments);
|
|
28
|
+
return descendedForward;
|
|
29
|
+
});
|
|
30
|
+
if (visited) {
|
|
31
|
+
descendedForward = true;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return descendedForward;
|
|
35
|
+
}
|
|
36
|
+
visitNode(generalNode, specificNode, ...remainingArguments) {
|
|
37
|
+
let visited = false;
|
|
38
|
+
const generalNodeTerminalNode = generalNode.isTerminalNode(), specificNodeTerminalNode = specificNode.isTerminalNode(), generalNodeNonTerminalNode = generalNode.isNonTerminalNode(), specificNodeNonTerminalNode = specificNode.isNonTerminalNode();
|
|
39
|
+
if (false) {
|
|
40
|
+
///
|
|
41
|
+
} else if (generalNodeTerminalNode && specificNodeTerminalNode) {
|
|
42
|
+
const generalTerminalNode = generalNode, specificTerminalNode = specificNode; ///
|
|
43
|
+
visited = this.visitTerminalNode(generalTerminalNode, specificTerminalNode, ...remainingArguments);
|
|
44
|
+
} else if (generalNodeNonTerminalNode && specificNodeNonTerminalNode) {
|
|
45
|
+
const generalNonTerminalNode = generalNode, specificNonTerminalNode = specificNode; ///
|
|
46
|
+
visited = this.visitNonTerminalNode(generalNonTerminalNode, specificNonTerminalNode, ...remainingArguments);
|
|
47
|
+
}
|
|
48
|
+
return visited;
|
|
49
|
+
}
|
|
50
|
+
visitTerminalNode(generalTerminalNode, specificTerminalNode, ...remainingArguments) {
|
|
51
|
+
let visited = false;
|
|
52
|
+
const descendForward = remainingArguments.pop(), descendedForward = descendForward();
|
|
53
|
+
if (descendedForward) {
|
|
54
|
+
visited = true;
|
|
55
|
+
}
|
|
56
|
+
remainingArguments.push(descendForward);
|
|
57
|
+
return visited;
|
|
58
|
+
}
|
|
59
|
+
visitNonTerminalNode(generalNonTerminalNode, specificNonTerminalNode, ...remainingArguments) {
|
|
60
|
+
let visited = false;
|
|
61
|
+
let { maps } = this.constructor;
|
|
62
|
+
maps = [
|
|
63
|
+
...maps,
|
|
64
|
+
{
|
|
65
|
+
generalNodeQuery: _pass.nonTerminalNodeQuery,
|
|
66
|
+
specificNodeQuery: _pass.nonTerminalNodeQuery,
|
|
67
|
+
run: (generalNode, specificNode, ...remainingArguments)=>{
|
|
68
|
+
let visited = false;
|
|
69
|
+
const generalNonTerminalNodeRuleName = generalNonTerminalNode.getRuleName(), specificNonTerminalNodeRuleName = specificNonTerminalNode.getRuleName(); ///
|
|
70
|
+
if (generalNonTerminalNodeRuleName === specificNonTerminalNodeRuleName) {
|
|
71
|
+
const index = 0, generalNonTerminalNodeChildNodes = generalNonTerminalNode.getChildNodes(), specificNonTerminalNodeChildNodes = specificNonTerminalNode.getChildNodes(), generalChildNodes = generalNonTerminalNodeChildNodes, specificChildNodes = specificNonTerminalNodeChildNodes, childNodesCongruent = (0, _pass.areChildNodesCongruent)(generalChildNodes, specificChildNodes);
|
|
72
|
+
if (childNodesCongruent) {
|
|
73
|
+
const descended = this.descend(index, generalChildNodes, specificChildNodes, ...remainingArguments);
|
|
74
|
+
if (descended) {
|
|
75
|
+
visited = true;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return visited;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
];
|
|
83
|
+
maps.some((map)=>{
|
|
84
|
+
const { generalNodeQuery, specificNodeQuery, run } = map;
|
|
85
|
+
const generalNode = generalNodeQuery(generalNonTerminalNode), specificNode = specificNodeQuery(specificNonTerminalNode); ///
|
|
86
|
+
if (generalNode !== null && specificNode !== null) {
|
|
87
|
+
const success = run(generalNode, specificNode, ...remainingArguments);
|
|
88
|
+
visited = success; ///
|
|
89
|
+
return true;
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
return visited;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXNzL2ZvcndhcmRaaXAuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IG5vblRlcm1pbmFsTm9kZVF1ZXJ5LCBhcmVDaGlsZE5vZGVzQ29uZ3J1ZW50IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9wYXNzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZvcndhcmRaaXBQYXNzIHtcbiAgcnVuKGdlbmVyYWxOb2RlLCBzcGVjaWZpY05vZGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICAgIGxldCBzdWNjZXNzO1xuXG4gICAgY29uc3QgdmlzaXRlZCA9IHRoaXMudmlzaXROb2RlKGdlbmVyYWxOb2RlLCBzcGVjaWZpY05vZGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cyk7XG5cbiAgICBzdWNjZXNzID0gdmlzaXRlZDsgIC8vL1xuXG4gICAgcmV0dXJuIHN1Y2Nlc3M7XG4gIH1cblxuICBkZXNjZW5kKGluZGV4LCBnZW5lcmFsQ2hpbGROb2Rlcywgc3BlY2lmaWNDaGlsZE5vZGVzLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgICBsZXQgZGVzY2VuZGVkRm9yd2FyZCA9IGZhbHNlO1xuXG4gICAgY29uc3QgZGVzY2VuZEZvcndhcmQgPSByZW1haW5pbmdBcmd1bWVudHMucG9wKCksICAvLy9cbiAgICAgICAgICBnZW5lcmFsQ2hpbGROb2Rlc0xlbmd0aCA9IGdlbmVyYWxDaGlsZE5vZGVzLmxlbmd0aDtcblxuICAgIGlmIChpbmRleCA9PT0gZ2VuZXJhbENoaWxkTm9kZXNMZW5ndGgpIHtcbiAgICAgIGRlc2NlbmRlZEZvcndhcmQgPSBkZXNjZW5kRm9yd2FyZCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBnZW5lcmFsQ2hpbGROb2RlID0gZ2VuZXJhbENoaWxkTm9kZXNbaW5kZXhdLFxuICAgICAgICAgICAgc3BlY2lmaWNDaGlsZE5vZGUgPSBzcGVjaWZpY0NoaWxkTm9kZXNbaW5kZXhdLFxuICAgICAgICAgICAgZ2VuZXJhbE5vZGUgPSBnZW5lcmFsQ2hpbGROb2RlLCAvLy9cbiAgICAgICAgICAgIHNwZWNpZmljTm9kZSA9IHNwZWNpZmljQ2hpbGROb2RlLCAvLy9cbiAgICAgICAgICAgIHZpc2l0ZWQgPSB0aGlzLnZpc2l0Tm9kZShnZW5lcmFsTm9kZSwgc3BlY2lmaWNOb2RlLCAuLi5yZW1haW5pbmdBcmd1bWVudHMsICgpID0+IHtcbiAgICAgICAgICAgICAgcmVtYWluaW5nQXJndW1lbnRzLnB1c2goZGVzY2VuZEZvcndhcmQpO1xuXG4gICAgICAgICAgICAgIGNvbnN0IGFoZWFkSW5kZXggPSBpbmRleCArIDEsXG4gICAgICAgICAgICAgICAgICAgIGRlc2NlbmRlZEZvcndhcmQgPSB0aGlzLmRlc2NlbmQoYWhlYWRJbmRleCwgZ2VuZXJhbENoaWxkTm9kZXMsIHNwZWNpZmljQ2hpbGROb2RlcywgLi4ucmVtYWluaW5nQXJndW1lbnRzKTtcblxuICAgICAgICAgICAgICByZXR1cm4gZGVzY2VuZGVkRm9yd2FyZDtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICBpZiAodmlzaXRlZCkge1xuICAgICAgICBkZXNjZW5kZWRGb3J3YXJkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZGVzY2VuZGVkRm9yd2FyZDtcbiAgfVxuXG4gIHZpc2l0Tm9kZShnZW5lcmFsTm9kZSwgc3BlY2lmaWNOb2RlLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgICBsZXQgdmlzaXRlZCA9IGZhbHNlO1xuXG4gICAgY29uc3QgZ2VuZXJhbE5vZGVUZXJtaW5hbE5vZGUgPSBnZW5lcmFsTm9kZS5pc1Rlcm1pbmFsTm9kZSgpLFxuICAgICAgICAgIHNwZWNpZmljTm9kZVRlcm1pbmFsTm9kZSA9IHNwZWNpZmljTm9kZS5pc1Rlcm1pbmFsTm9kZSgpLFxuICAgICAgICAgIGdlbmVyYWxOb2RlTm9uVGVybWluYWxOb2RlID0gZ2VuZXJhbE5vZGUuaXNOb25UZXJtaW5hbE5vZGUoKSxcbiAgICAgICAgICBzcGVjaWZpY05vZGVOb25UZXJtaW5hbE5vZGUgPSBzcGVjaWZpY05vZGUuaXNOb25UZXJtaW5hbE5vZGUoKTtcblxuICAgIGlmIChmYWxzZSkge1xuICAgICAgLy8vXG4gICAgfSBlbHNlIGlmIChnZW5lcmFsTm9kZVRlcm1pbmFsTm9kZSAmJiBzcGVjaWZpY05vZGVUZXJtaW5hbE5vZGUpIHtcbiAgICAgIGNvbnN0IGdlbmVyYWxUZXJtaW5hbE5vZGUgPSBnZW5lcmFsTm9kZSwgIC8vL1xuICAgICAgICAgICAgc3BlY2lmaWNUZXJtaW5hbE5vZGUgPSBzcGVjaWZpY05vZGU7ICAvLy9cblxuICAgICAgdmlzaXRlZCA9IHRoaXMudmlzaXRUZXJtaW5hbE5vZGUoZ2VuZXJhbFRlcm1pbmFsTm9kZSwgc3BlY2lmaWNUZXJtaW5hbE5vZGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cyk7XG4gICAgfSBlbHNlIGlmIChnZW5lcmFsTm9kZU5vblRlcm1pbmFsTm9kZSAmJiBzcGVjaWZpY05vZGVOb25UZXJtaW5hbE5vZGUpIHtcbiAgICAgIGNvbnN0IGdlbmVyYWxOb25UZXJtaW5hbE5vZGUgPSBnZW5lcmFsTm9kZSwgIC8vL1xuICAgICAgICAgICAgc3BlY2lmaWNOb25UZXJtaW5hbE5vZGUgPSBzcGVjaWZpY05vZGU7IC8vL1xuXG4gICAgICB2aXNpdGVkID0gdGhpcy52aXNpdE5vblRlcm1pbmFsTm9kZShnZW5lcmFsTm9uVGVybWluYWxOb2RlLCBzcGVjaWZpY05vblRlcm1pbmFsTm9kZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmlzaXRlZDtcbiAgfVxuXG4gIHZpc2l0VGVybWluYWxOb2RlKGdlbmVyYWxUZXJtaW5hbE5vZGUsIHNwZWNpZmljVGVybWluYWxOb2RlLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgICBsZXQgdmlzaXRlZCA9IGZhbHNlO1xuXG4gICAgY29uc3QgZGVzY2VuZEZvcndhcmQgPSByZW1haW5pbmdBcmd1bWVudHMucG9wKCksIC8vL1xuICAgICAgICAgIGRlc2NlbmRlZEZvcndhcmQgPSBkZXNjZW5kRm9yd2FyZCgpO1xuXG4gICAgaWYgKGRlc2NlbmRlZEZvcndhcmQpIHtcbiAgICAgIHZpc2l0ZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIHJlbWFpbmluZ0FyZ3VtZW50cy5wdXNoKGRlc2NlbmRGb3J3YXJkKTtcblxuICAgIHJldHVybiB2aXNpdGVkO1xuICB9XG5cbiAgdmlzaXROb25UZXJtaW5hbE5vZGUoZ2VuZXJhbE5vblRlcm1pbmFsTm9kZSwgc3BlY2lmaWNOb25UZXJtaW5hbE5vZGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICAgIGxldCB2aXNpdGVkID0gZmFsc2U7XG5cbiAgICBsZXQgeyBtYXBzIH0gPSB0aGlzLmNvbnN0cnVjdG9yO1xuXG4gICAgbWFwcyA9IFsgLy8vXG4gICAgICAuLi5tYXBzLFxuICAgICAge1xuICAgICAgICBnZW5lcmFsTm9kZVF1ZXJ5OiBub25UZXJtaW5hbE5vZGVRdWVyeSxcbiAgICAgICAgc3BlY2lmaWNOb2RlUXVlcnk6IG5vblRlcm1pbmFsTm9kZVF1ZXJ5LFxuICAgICAgICBydW46IChnZW5lcmFsTm9kZSwgc3BlY2lmaWNOb2RlLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpID0+IHtcbiAgICAgICAgICBsZXQgdmlzaXRlZCA9IGZhbHNlO1xuXG4gICAgICAgICAgY29uc3QgZ2VuZXJhbE5vblRlcm1pbmFsTm9kZVJ1bGVOYW1lID0gZ2VuZXJhbE5vblRlcm1pbmFsTm9kZS5nZXRSdWxlTmFtZSgpLCAvLy9cbiAgICAgICAgICAgICAgICBzcGVjaWZpY05vblRlcm1pbmFsTm9kZVJ1bGVOYW1lID0gc3BlY2lmaWNOb25UZXJtaW5hbE5vZGUuZ2V0UnVsZU5hbWUoKTsgLy8vXG5cbiAgICAgICAgICBpZiAoZ2VuZXJhbE5vblRlcm1pbmFsTm9kZVJ1bGVOYW1lID09PSBzcGVjaWZpY05vblRlcm1pbmFsTm9kZVJ1bGVOYW1lKSB7XG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IDAsXG4gICAgICAgICAgICAgICAgICBnZW5lcmFsTm9uVGVybWluYWxOb2RlQ2hpbGROb2RlcyA9IGdlbmVyYWxOb25UZXJtaW5hbE5vZGUuZ2V0Q2hpbGROb2RlcygpLFxuICAgICAgICAgICAgICAgICAgc3BlY2lmaWNOb25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzID0gc3BlY2lmaWNOb25UZXJtaW5hbE5vZGUuZ2V0Q2hpbGROb2RlcygpLFxuICAgICAgICAgICAgICAgICAgZ2VuZXJhbENoaWxkTm9kZXMgPSBnZW5lcmFsTm9uVGVybWluYWxOb2RlQ2hpbGROb2RlcywgLy8vXG4gICAgICAgICAgICAgICAgICBzcGVjaWZpY0NoaWxkTm9kZXMgPSBzcGVjaWZpY05vblRlcm1pbmFsTm9kZUNoaWxkTm9kZXMsIC8vL1xuICAgICAgICAgICAgICAgICAgY2hpbGROb2Rlc0NvbmdydWVudCA9IGFyZUNoaWxkTm9kZXNDb25ncnVlbnQoZ2VuZXJhbENoaWxkTm9kZXMsIHNwZWNpZmljQ2hpbGROb2Rlcyk7XG5cbiAgICAgICAgICAgIGlmIChjaGlsZE5vZGVzQ29uZ3J1ZW50KSB7XG4gICAgICAgICAgICAgIGNvbnN0IGRlc2NlbmRlZCA9IHRoaXMuZGVzY2VuZChpbmRleCwgZ2VuZXJhbENoaWxkTm9kZXMsIHNwZWNpZmljQ2hpbGROb2RlcywgLi4ucmVtYWluaW5nQXJndW1lbnRzKTtcblxuICAgICAgICAgICAgICBpZiAoZGVzY2VuZGVkKSB7XG4gICAgICAgICAgICAgICAgdmlzaXRlZCA9IHRydWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdmlzaXRlZDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIF1cblxuICAgIG1hcHMuc29tZSgobWFwKSA9PiB7XG4gICAgICBjb25zdCB7IGdlbmVyYWxOb2RlUXVlcnksIHNwZWNpZmljTm9kZVF1ZXJ5LCBydW4gfSA9IG1hcDtcblxuICAgICAgY29uc3QgZ2VuZXJhbE5vZGUgPSBnZW5lcmFsTm9kZVF1ZXJ5KGdlbmVyYWxOb25UZXJtaW5hbE5vZGUpLCAgLy8vXG4gICAgICAgIHNwZWNpZmljTm9kZSA9IHNwZWNpZmljTm9kZVF1ZXJ5KHNwZWNpZmljTm9uVGVybWluYWxOb2RlKTsgIC8vL1xuXG4gICAgICBpZiAoKGdlbmVyYWxOb2RlICE9PSBudWxsKSAmJiAoc3BlY2lmaWNOb2RlICE9PSBudWxsKSkge1xuICAgICAgICBjb25zdCBzdWNjZXNzICA9IHJ1bihnZW5lcmFsTm9kZSwgc3BlY2lmaWNOb2RlLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpO1xuXG4gICAgICAgIHZpc2l0ZWQgPSBzdWNjZXNzOyAgLy8vXG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdmlzaXRlZDtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIkZvcndhcmRaaXBQYXNzIiwicnVuIiwiZ2VuZXJhbE5vZGUiLCJzcGVjaWZpY05vZGUiLCJyZW1haW5pbmdBcmd1bWVudHMiLCJzdWNjZXNzIiwidmlzaXRlZCIsInZpc2l0Tm9kZSIsImRlc2NlbmQiLCJpbmRleCIsImdlbmVyYWxDaGlsZE5vZGVzIiwic3BlY2lmaWNDaGlsZE5vZGVzIiwiZGVzY2VuZGVkRm9yd2FyZCIsImRlc2NlbmRGb3J3YXJkIiwicG9wIiwiZ2VuZXJhbENoaWxkTm9kZXNMZW5ndGgiLCJsZW5ndGgiLCJnZW5lcmFsQ2hpbGROb2RlIiwic3BlY2lmaWNDaGlsZE5vZGUiLCJwdXNoIiwiYWhlYWRJbmRleCIsImdlbmVyYWxOb2RlVGVybWluYWxOb2RlIiwiaXNUZXJtaW5hbE5vZGUiLCJzcGVjaWZpY05vZGVUZXJtaW5hbE5vZGUiLCJnZW5lcmFsTm9kZU5vblRlcm1pbmFsTm9kZSIsImlzTm9uVGVybWluYWxOb2RlIiwic3BlY2lmaWNOb2RlTm9uVGVybWluYWxOb2RlIiwiZ2VuZXJhbFRlcm1pbmFsTm9kZSIsInNwZWNpZmljVGVybWluYWxOb2RlIiwidmlzaXRUZXJtaW5hbE5vZGUiLCJnZW5lcmFsTm9uVGVybWluYWxOb2RlIiwic3BlY2lmaWNOb25UZXJtaW5hbE5vZGUiLCJ2aXNpdE5vblRlcm1pbmFsTm9kZSIsIm1hcHMiLCJnZW5lcmFsTm9kZVF1ZXJ5Iiwibm9uVGVybWluYWxOb2RlUXVlcnkiLCJzcGVjaWZpY05vZGVRdWVyeSIsImdlbmVyYWxOb25UZXJtaW5hbE5vZGVSdWxlTmFtZSIsImdldFJ1bGVOYW1lIiwic3BlY2lmaWNOb25UZXJtaW5hbE5vZGVSdWxlTmFtZSIsImdlbmVyYWxOb25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzIiwiZ2V0Q2hpbGROb2RlcyIsInNwZWNpZmljTm9uVGVybWluYWxOb2RlQ2hpbGROb2RlcyIsImNoaWxkTm9kZXNDb25ncnVlbnQiLCJhcmVDaGlsZE5vZGVzQ29uZ3J1ZW50IiwiZGVzY2VuZGVkIiwic29tZSIsIm1hcCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBSUE7OztlQUFxQkE7OztzQkFGd0M7QUFFOUMsTUFBTUE7SUFDbkJDLElBQUlDLFdBQVcsRUFBRUMsWUFBWSxFQUFFLEdBQUdDLGtCQUFrQixFQUFFO1FBQ3BELElBQUlDO1FBRUosTUFBTUMsVUFBVSxJQUFJLENBQUNDLFNBQVMsQ0FBQ0wsYUFBYUMsaUJBQWlCQztRQUU3REMsVUFBVUMsU0FBVSxHQUFHO1FBRXZCLE9BQU9EO0lBQ1Q7SUFFQUcsUUFBUUMsS0FBSyxFQUFFQyxpQkFBaUIsRUFBRUMsa0JBQWtCLEVBQUUsR0FBR1Asa0JBQWtCLEVBQUU7UUFDM0UsSUFBSVEsbUJBQW1CO1FBRXZCLE1BQU1DLGlCQUFpQlQsbUJBQW1CVSxHQUFHLElBQ3ZDQywwQkFBMEJMLGtCQUFrQk0sTUFBTTtRQUV4RCxJQUFJUCxVQUFVTSx5QkFBeUI7WUFDckNILG1CQUFtQkM7UUFDckIsT0FBTztZQUNMLE1BQU1JLG1CQUFtQlAsaUJBQWlCLENBQUNELE1BQU0sRUFDM0NTLG9CQUFvQlAsa0JBQWtCLENBQUNGLE1BQU0sRUFDN0NQLGNBQWNlLGtCQUNkZCxlQUFlZSxtQkFDZlosVUFBVSxJQUFJLENBQUNDLFNBQVMsQ0FBQ0wsYUFBYUMsaUJBQWlCQyxvQkFBb0I7Z0JBQ3pFQSxtQkFBbUJlLElBQUksQ0FBQ047Z0JBRXhCLE1BQU1PLGFBQWFYLFFBQVEsR0FDckJHLG1CQUFtQixJQUFJLENBQUNKLE9BQU8sQ0FBQ1ksWUFBWVYsbUJBQW1CQyx1QkFBdUJQO2dCQUU1RixPQUFPUTtZQUNUO1lBRU4sSUFBSU4sU0FBUztnQkFDWE0sbUJBQW1CO1lBQ3JCO1FBQ0Y7UUFFQSxPQUFPQTtJQUNUO0lBRUFMLFVBQVVMLFdBQVcsRUFBRUMsWUFBWSxFQUFFLEdBQUdDLGtCQUFrQixFQUFFO1FBQzFELElBQUlFLFVBQVU7UUFFZCxNQUFNZSwwQkFBMEJuQixZQUFZb0IsY0FBYyxJQUNwREMsMkJBQTJCcEIsYUFBYW1CLGNBQWMsSUFDdERFLDZCQUE2QnRCLFlBQVl1QixpQkFBaUIsSUFDMURDLDhCQUE4QnZCLGFBQWFzQixpQkFBaUI7UUFFbEUsSUFBSSxPQUFPO1FBQ1QsR0FBRztRQUNMLE9BQU8sSUFBSUosMkJBQTJCRSwwQkFBMEI7WUFDOUQsTUFBTUksc0JBQXNCekIsYUFDdEIwQix1QkFBdUJ6QixjQUFlLEdBQUc7WUFFL0NHLFVBQVUsSUFBSSxDQUFDdUIsaUJBQWlCLENBQUNGLHFCQUFxQkMseUJBQXlCeEI7UUFDakYsT0FBTyxJQUFJb0IsOEJBQThCRSw2QkFBNkI7WUFDcEUsTUFBTUkseUJBQXlCNUIsYUFDekI2QiwwQkFBMEI1QixjQUFjLEdBQUc7WUFFakRHLFVBQVUsSUFBSSxDQUFDMEIsb0JBQW9CLENBQUNGLHdCQUF3QkMsNEJBQTRCM0I7UUFDMUY7UUFFQSxPQUFPRTtJQUNUO0lBRUF1QixrQkFBa0JGLG1CQUFtQixFQUFFQyxvQkFBb0IsRUFBRSxHQUFHeEIsa0JBQWtCLEVBQUU7UUFDbEYsSUFBSUUsVUFBVTtRQUVkLE1BQU1PLGlCQUFpQlQsbUJBQW1CVSxHQUFHLElBQ3ZDRixtQkFBbUJDO1FBRXpCLElBQUlELGtCQUFrQjtZQUNwQk4sVUFBVTtRQUNaO1FBRUFGLG1CQUFtQmUsSUFBSSxDQUFDTjtRQUV4QixPQUFPUDtJQUNUO0lBRUEwQixxQkFBcUJGLHNCQUFzQixFQUFFQyx1QkFBdUIsRUFBRSxHQUFHM0Isa0JBQWtCLEVBQUU7UUFDM0YsSUFBSUUsVUFBVTtRQUVkLElBQUksRUFBRTJCLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxXQUFXO1FBRS9CQSxPQUFPO2VBQ0ZBO1lBQ0g7Z0JBQ0VDLGtCQUFrQkMsMEJBQW9CO2dCQUN0Q0MsbUJBQW1CRCwwQkFBb0I7Z0JBQ3ZDbEMsS0FBSyxDQUFDQyxhQUFhQyxjQUFjLEdBQUdDO29CQUNsQyxJQUFJRSxVQUFVO29CQUVkLE1BQU0rQixpQ0FBaUNQLHVCQUF1QlEsV0FBVyxJQUNuRUMsa0NBQWtDUix3QkFBd0JPLFdBQVcsSUFBSSxHQUFHO29CQUVsRixJQUFJRCxtQ0FBbUNFLGlDQUFpQzt3QkFDdEUsTUFBTTlCLFFBQVEsR0FDUitCLG1DQUFtQ1YsdUJBQXVCVyxhQUFhLElBQ3ZFQyxvQ0FBb0NYLHdCQUF3QlUsYUFBYSxJQUN6RS9CLG9CQUFvQjhCLGtDQUNwQjdCLHFCQUFxQitCLG1DQUNyQkMsc0JBQXNCQyxJQUFBQSw0QkFBc0IsRUFBQ2xDLG1CQUFtQkM7d0JBRXRFLElBQUlnQyxxQkFBcUI7NEJBQ3ZCLE1BQU1FLFlBQVksSUFBSSxDQUFDckMsT0FBTyxDQUFDQyxPQUFPQyxtQkFBbUJDLHVCQUF1QlA7NEJBRWhGLElBQUl5QyxXQUFXO2dDQUNidkMsVUFBVTs0QkFDWjt3QkFDRjtvQkFDRjtvQkFFQSxPQUFPQTtnQkFDVDtZQUNGO1NBQ0Q7UUFFRDJCLEtBQUthLElBQUksQ0FBQyxDQUFDQztZQUNULE1BQU0sRUFBRWIsZ0JBQWdCLEVBQUVFLGlCQUFpQixFQUFFbkMsR0FBRyxFQUFFLEdBQUc4QztZQUVyRCxNQUFNN0MsY0FBY2dDLGlCQUFpQkoseUJBQ25DM0IsZUFBZWlDLGtCQUFrQkwsMEJBQTJCLEdBQUc7WUFFakUsSUFBSSxBQUFDN0IsZ0JBQWdCLFFBQVVDLGlCQUFpQixNQUFPO2dCQUNyRCxNQUFNRSxVQUFXSixJQUFJQyxhQUFhQyxpQkFBaUJDO2dCQUVuREUsVUFBVUQsU0FBVSxHQUFHO2dCQUV2QixPQUFPO1lBQ1Q7UUFDRjtRQUVBLE9BQU9DO0lBQ1Q7QUFDRiJ9
|
package/lib/pass/zip.js
CHANGED
|
@@ -18,20 +18,14 @@ class ZipPass {
|
|
|
18
18
|
}
|
|
19
19
|
descend(generalChildNodes, specificChildNodes, ...remainingArguments) {
|
|
20
20
|
let descended = false;
|
|
21
|
-
const
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
const visited = generalChildNodes.every((generalChildNode, index)=>{
|
|
26
|
-
const specificChildNode = specificChildNodes[index], specificNode = specificChildNode, generalNode = generalChildNode, visited = this.visitNode(generalNode, specificNode, ...remainingArguments);
|
|
27
|
-
if (visited) {
|
|
28
|
-
return true;
|
|
29
|
-
}
|
|
30
|
-
});
|
|
31
|
-
if (visited) {
|
|
32
|
-
descended = true;
|
|
33
|
-
}
|
|
21
|
+
const visited = generalChildNodes.every((generalChildNode, index)=>{
|
|
22
|
+
const specificChildNode = specificChildNodes[index], specificNode = specificChildNode, generalNode = generalChildNode, visited = this.visitNode(generalNode, specificNode, ...remainingArguments);
|
|
23
|
+
if (visited) {
|
|
24
|
+
return true;
|
|
34
25
|
}
|
|
26
|
+
});
|
|
27
|
+
if (visited) {
|
|
28
|
+
descended = true;
|
|
35
29
|
}
|
|
36
30
|
return descended;
|
|
37
31
|
}
|
|
@@ -66,9 +60,12 @@ class ZipPass {
|
|
|
66
60
|
let visited = false;
|
|
67
61
|
const generalNonTerminalNodeRuleName = generalNonTerminalNode.getRuleName(), specificNonTerminalNodeRuleName = specificNonTerminalNode.getRuleName(); ///
|
|
68
62
|
if (generalNonTerminalNodeRuleName === specificNonTerminalNodeRuleName) {
|
|
69
|
-
const generalNonTerminalNodeChildNodes = generalNonTerminalNode.getChildNodes(), specificNonTerminalNodeChildNodes = specificNonTerminalNode.getChildNodes(), generalChildNodes = generalNonTerminalNodeChildNodes, specificChildNodes = specificNonTerminalNodeChildNodes,
|
|
70
|
-
if (
|
|
71
|
-
|
|
63
|
+
const generalNonTerminalNodeChildNodes = generalNonTerminalNode.getChildNodes(), specificNonTerminalNodeChildNodes = specificNonTerminalNode.getChildNodes(), generalChildNodes = generalNonTerminalNodeChildNodes, specificChildNodes = specificNonTerminalNodeChildNodes, childNodesCongruent = (0, _pass.areChildNodesCongruent)(generalChildNodes, specificChildNodes);
|
|
64
|
+
if (childNodesCongruent) {
|
|
65
|
+
const descended = this.descend(generalChildNodes, specificChildNodes, ...remainingArguments);
|
|
66
|
+
if (descended) {
|
|
67
|
+
visited = true;
|
|
68
|
+
}
|
|
72
69
|
}
|
|
73
70
|
}
|
|
74
71
|
return visited;
|
|
@@ -88,4 +85,4 @@ class ZipPass {
|
|
|
88
85
|
}
|
|
89
86
|
}
|
|
90
87
|
|
|
91
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXNzL3ppcC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgbm9uVGVybWluYWxOb2RlUXVlcnksIHRlcm1pbmFsTm9kZU1hcEZyb21Ob2RlcywgYXJlVGVybWluYWxOb2RlTWFwc0VxdWFsIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9wYXNzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFppcFBhc3Mge1xuICBydW4oZ2VuZXJhbE5vZGUsIHNwZWNpZmljTm9kZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XG4gICAgbGV0IHN1Y2Nlc3M7XG5cbiAgICBjb25zdCB2aXNpdGVkID0gdGhpcy52aXNpdE5vZGUoZ2VuZXJhbE5vZGUsIHNwZWNpZmljTm9kZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKTtcblxuICAgIHN1Y2Nlc3MgPSB2aXNpdGVkOyAgLy8vXG5cbiAgICByZXR1cm4gc3VjY2VzcztcbiAgfVxuXG4gIGRlc2NlbmQoZ2VuZXJhbENoaWxkTm9kZXMsIHNwZWNpZmljQ2hpbGROb2RlcywgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XG4gICAgbGV0IGRlc2NlbmRlZCA9IGZhbHNlO1xuXG4gICAgY29uc3QgZ2VuZXJhbENoaWxkTm9kZXNMZW5ndGggPSBnZW5lcmFsQ2hpbGROb2Rlcy5sZW5ndGgsXG4gICAgICAgICAgc3BlY2lmaWNDaGlsZE5vZGVzTGVuZ3RoID0gc3BlY2lmaWNDaGlsZE5vZGVzLmxlbmd0aDtcblxuICAgIGlmIChnZW5lcmFsQ2hpbGROb2Rlc0xlbmd0aCA9PT0gc3BlY2lmaWNDaGlsZE5vZGVzTGVuZ3RoKSB7XG4gICAgICBjb25zdCBzcGVjaWZpY1Rlcm1pbmFsTm9kZU1hcCA9IHRlcm1pbmFsTm9kZU1hcEZyb21Ob2RlcyhzcGVjaWZpY0NoaWxkTm9kZXMpLFxuICAgICAgICAgICAgZ2VuZXJhbFRlcm1pbmFsTm9kZU1hcCA9IHRlcm1pbmFsTm9kZU1hcEZyb21Ob2RlcyhnZW5lcmFsQ2hpbGROb2RlcyksXG4gICAgICAgICAgICB0ZXJtaW5hbE5vZGVNYXBzRXF1YWwgPSBhcmVUZXJtaW5hbE5vZGVNYXBzRXF1YWwoZ2VuZXJhbFRlcm1pbmFsTm9kZU1hcCwgc3BlY2lmaWNUZXJtaW5hbE5vZGVNYXApO1xuXG4gICAgICBpZiAodGVybWluYWxOb2RlTWFwc0VxdWFsKSB7XG4gICAgICAgIGNvbnN0IHZpc2l0ZWQgPSBnZW5lcmFsQ2hpbGROb2Rlcy5ldmVyeSgoZ2VuZXJhbENoaWxkTm9kZSwgaW5kZXgpID0+IHtcbiAgICAgICAgICBjb25zdCBzcGVjaWZpY0NoaWxkTm9kZSA9IHNwZWNpZmljQ2hpbGROb2Rlc1tpbmRleF0sXG4gICAgICAgICAgICAgICAgc3BlY2lmaWNOb2RlID0gc3BlY2lmaWNDaGlsZE5vZGUsIC8vL1xuICAgICAgICAgICAgICAgIGdlbmVyYWxOb2RlID0gZ2VuZXJhbENoaWxkTm9kZSwgLy8vXG4gICAgICAgICAgICAgICAgdmlzaXRlZCA9IHRoaXMudmlzaXROb2RlKGdlbmVyYWxOb2RlLCBzcGVjaWZpY05vZGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cyk7XG5cbiAgICAgICAgICBpZiAodmlzaXRlZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAodmlzaXRlZCkge1xuICAgICAgICAgIGRlc2NlbmRlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZGVzY2VuZGVkO1xuICB9XG5cbiAgdmlzaXROb2RlKGdlbmVyYWxOb2RlLCBzcGVjaWZpY05vZGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICAgIGxldCB2aXNpdGVkID0gZmFsc2U7XG5cbiAgICBjb25zdCBnZW5lcmFsTm9kZVRlcm1pbmFsTm9kZSA9IGdlbmVyYWxOb2RlLmlzVGVybWluYWxOb2RlKCksXG4gICAgICAgICAgc3BlY2lmaWNOb2RlVGVybWluYWxOb2RlID0gc3BlY2lmaWNOb2RlLmlzVGVybWluYWxOb2RlKCksXG4gICAgICAgICAgZ2VuZXJhbE5vZGVOb25UZXJtaW5hbE5vZGUgPSBnZW5lcmFsTm9kZS5pc05vblRlcm1pbmFsTm9kZSgpLFxuICAgICAgICAgIHNwZWNpZmljTm9kZU5vblRlcm1pbmFsTm9kZSA9IHNwZWNpZmljTm9kZS5pc05vblRlcm1pbmFsTm9kZSgpO1xuXG4gICAgaWYgKGZhbHNlKSB7XG4gICAgICAvLy9cbiAgICB9IGVsc2UgaWYgKGdlbmVyYWxOb2RlVGVybWluYWxOb2RlICYmIHNwZWNpZmljTm9kZVRlcm1pbmFsTm9kZSkge1xuICAgICAgY29uc3QgZ2VuZXJhbFRlcm1pbmFsTm9kZSA9IGdlbmVyYWxOb2RlLCAgLy8vXG4gICAgICAgICAgICBzcGVjaWZpY1Rlcm1pbmFsTm9kZSA9IHNwZWNpZmljTm9kZTsgIC8vL1xuXG4gICAgICB2aXNpdGVkID0gdGhpcy52aXNpdFRlcm1pbmFsTm9kZShnZW5lcmFsVGVybWluYWxOb2RlLCBzcGVjaWZpY1Rlcm1pbmFsTm9kZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKTtcbiAgICB9IGVsc2UgaWYgKGdlbmVyYWxOb2RlTm9uVGVybWluYWxOb2RlICYmIHNwZWNpZmljTm9kZU5vblRlcm1pbmFsTm9kZSkge1xuICAgICAgY29uc3QgZ2VuZXJhbE5vblRlcm1pbmFsTm9kZSA9IGdlbmVyYWxOb2RlLCAgLy8vXG4gICAgICAgICAgICBzcGVjaWZpY05vblRlcm1pbmFsTm9kZSA9IHNwZWNpZmljTm9kZTsgLy8vXG5cbiAgICAgIHZpc2l0ZWQgPSB0aGlzLnZpc2l0Tm9uVGVybWluYWxOb2RlKGdlbmVyYWxOb25UZXJtaW5hbE5vZGUsIHNwZWNpZmljTm9uVGVybWluYWxOb2RlLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpO1xuICAgIH1cblxuICAgIHJldHVybiB2aXNpdGVkO1xuICB9XG5cbiAgdmlzaXRUZXJtaW5hbE5vZGUoZ2VuZXJhbFRlcm1pbmFsTm9kZSwgc3BlY2lmaWNUZXJtaW5hbE5vZGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykgeyAvLy9cbiAgICBsZXQgdmlzaXRlZDtcblxuICAgIHZpc2l0ZWQgPSB0cnVlO1xuXG4gICAgcmV0dXJuIHZpc2l0ZWQ7XG4gIH1cblxuICB2aXNpdE5vblRlcm1pbmFsTm9kZShnZW5lcmFsTm9uVGVybWluYWxOb2RlLCBzcGVjaWZpY05vblRlcm1pbmFsTm9kZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XG4gICAgbGV0IHZpc2l0ZWQgPSBmYWxzZTtcblxuICAgIGxldCB7IG1hcHMgfSA9IHRoaXMuY29uc3RydWN0b3I7XG5cbiAgICBtYXBzID0gWyAvLy9cbiAgICAgIC4uLm1hcHMsXG4gICAgICB7XG4gICAgICAgIGdlbmVyYWxOb2RlUXVlcnk6IG5vblRlcm1pbmFsTm9kZVF1ZXJ5LFxuICAgICAgICBzcGVjaWZpY05vZGVRdWVyeTogbm9uVGVybWluYWxOb2RlUXVlcnksXG4gICAgICAgIHJ1bjogKGdlbmVyYWxOb2RlLCBzcGVjaWZpY05vZGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykgPT4ge1xuICAgICAgICAgIGxldCB2aXNpdGVkID0gZmFsc2U7XG5cbiAgICAgICAgICBjb25zdCBnZW5lcmFsTm9uVGVybWluYWxOb2RlUnVsZU5hbWUgPSBnZW5lcmFsTm9uVGVybWluYWxOb2RlLmdldFJ1bGVOYW1lKCksIC8vL1xuICAgICAgICAgICAgICAgIHNwZWNpZmljTm9uVGVybWluYWxOb2RlUnVsZU5hbWUgPSBzcGVjaWZpY05vblRlcm1pbmFsTm9kZS5nZXRSdWxlTmFtZSgpOyAvLy9cblxuICAgICAgICAgIGlmIChnZW5lcmFsTm9uVGVybWluYWxOb2RlUnVsZU5hbWUgPT09IHNwZWNpZmljTm9uVGVybWluYWxOb2RlUnVsZU5hbWUpIHtcbiAgICAgICAgICAgIGNvbnN0IGdlbmVyYWxOb25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzID0gZ2VuZXJhbE5vblRlcm1pbmFsTm9kZS5nZXRDaGlsZE5vZGVzKCksXG4gICAgICAgICAgICAgICAgICBzcGVjaWZpY05vblRlcm1pbmFsTm9kZUNoaWxkTm9kZXMgPSBzcGVjaWZpY05vblRlcm1pbmFsTm9kZS5nZXRDaGlsZE5vZGVzKCksXG4gICAgICAgICAgICAgICAgICBnZW5lcmFsQ2hpbGROb2RlcyA9IGdlbmVyYWxOb25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzLCAvLy9cbiAgICAgICAgICAgICAgICAgIHNwZWNpZmljQ2hpbGROb2RlcyA9IHNwZWNpZmljTm9uVGVybWluYWxOb2RlQ2hpbGROb2RlcywgLy8vXG4gICAgICAgICAgICAgICAgICBkZXNjZW5kZWQgPSB0aGlzLmRlc2NlbmQoZ2VuZXJhbENoaWxkTm9kZXMsIHNwZWNpZmljQ2hpbGROb2RlcywgLi4ucmVtYWluaW5nQXJndW1lbnRzKTtcblxuICAgICAgICAgICAgaWYgKGRlc2NlbmRlZCkge1xuICAgICAgICAgICAgICB2aXNpdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdmlzaXRlZDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIF1cblxuICAgIG1hcHMuc29tZSgobWFwKSA9PiB7XG4gICAgICBjb25zdCB7IGdlbmVyYWxOb2RlUXVlcnksIHNwZWNpZmljTm9kZVF1ZXJ5LCBydW4gfSA9IG1hcDtcblxuICAgICAgY29uc3QgZ2VuZXJhbE5vZGUgPSBnZW5lcmFsTm9kZVF1ZXJ5KGdlbmVyYWxOb25UZXJtaW5hbE5vZGUpLCAgLy8vXG4gICAgICAgICAgICBzcGVjaWZpY05vZGUgPSBzcGVjaWZpY05vZGVRdWVyeShzcGVjaWZpY05vblRlcm1pbmFsTm9kZSk7ICAvLy9cblxuICAgICAgaWYgKChnZW5lcmFsTm9kZSAhPT0gbnVsbCkgJiYgKHNwZWNpZmljTm9kZSAhPT0gbnVsbCkpIHtcbiAgICAgICAgY29uc3Qgc3VjY2VzcyAgPSBydW4oZ2VuZXJhbE5vZGUsIHNwZWNpZmljTm9kZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKTtcblxuICAgICAgICB2aXNpdGVkID0gc3VjY2VzczsgIC8vL1xuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHZpc2l0ZWQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJaaXBQYXNzIiwicnVuIiwiZ2VuZXJhbE5vZGUiLCJzcGVjaWZpY05vZGUiLCJyZW1haW5pbmdBcmd1bWVudHMiLCJzdWNjZXNzIiwidmlzaXRlZCIsInZpc2l0Tm9kZSIsImRlc2NlbmQiLCJnZW5lcmFsQ2hpbGROb2RlcyIsInNwZWNpZmljQ2hpbGROb2RlcyIsImRlc2NlbmRlZCIsImdlbmVyYWxDaGlsZE5vZGVzTGVuZ3RoIiwibGVuZ3RoIiwic3BlY2lmaWNDaGlsZE5vZGVzTGVuZ3RoIiwic3BlY2lmaWNUZXJtaW5hbE5vZGVNYXAiLCJ0ZXJtaW5hbE5vZGVNYXBGcm9tTm9kZXMiLCJnZW5lcmFsVGVybWluYWxOb2RlTWFwIiwidGVybWluYWxOb2RlTWFwc0VxdWFsIiwiYXJlVGVybWluYWxOb2RlTWFwc0VxdWFsIiwiZXZlcnkiLCJnZW5lcmFsQ2hpbGROb2RlIiwiaW5kZXgiLCJzcGVjaWZpY0NoaWxkTm9kZSIsImdlbmVyYWxOb2RlVGVybWluYWxOb2RlIiwiaXNUZXJtaW5hbE5vZGUiLCJzcGVjaWZpY05vZGVUZXJtaW5hbE5vZGUiLCJnZW5lcmFsTm9kZU5vblRlcm1pbmFsTm9kZSIsImlzTm9uVGVybWluYWxOb2RlIiwic3BlY2lmaWNOb2RlTm9uVGVybWluYWxOb2RlIiwiZ2VuZXJhbFRlcm1pbmFsTm9kZSIsInNwZWNpZmljVGVybWluYWxOb2RlIiwidmlzaXRUZXJtaW5hbE5vZGUiLCJnZW5lcmFsTm9uVGVybWluYWxOb2RlIiwic3BlY2lmaWNOb25UZXJtaW5hbE5vZGUiLCJ2aXNpdE5vblRlcm1pbmFsTm9kZSIsIm1hcHMiLCJnZW5lcmFsTm9kZVF1ZXJ5Iiwibm9uVGVybWluYWxOb2RlUXVlcnkiLCJzcGVjaWZpY05vZGVRdWVyeSIsImdlbmVyYWxOb25UZXJtaW5hbE5vZGVSdWxlTmFtZSIsImdldFJ1bGVOYW1lIiwic3BlY2lmaWNOb25UZXJtaW5hbE5vZGVSdWxlTmFtZSIsImdlbmVyYWxOb25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzIiwiZ2V0Q2hpbGROb2RlcyIsInNwZWNpZmljTm9uVGVybWluYWxOb2RlQ2hpbGROb2RlcyIsInNvbWUiLCJtYXAiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQUlBOzs7ZUFBcUJBOzs7c0JBRm9FO0FBRTFFLE1BQU1BO0lBQ25CQyxJQUFJQyxXQUFXLEVBQUVDLFlBQVksRUFBRSxHQUFHQyxrQkFBa0IsRUFBRTtRQUNwRCxJQUFJQztRQUVKLE1BQU1DLFVBQVUsSUFBSSxDQUFDQyxTQUFTLENBQUNMLGFBQWFDLGlCQUFpQkM7UUFFN0RDLFVBQVVDLFNBQVUsR0FBRztRQUV2QixPQUFPRDtJQUNUO0lBRUFHLFFBQVFDLGlCQUFpQixFQUFFQyxrQkFBa0IsRUFBRSxHQUFHTixrQkFBa0IsRUFBRTtRQUNwRSxJQUFJTyxZQUFZO1FBRWhCLE1BQU1DLDBCQUEwQkgsa0JBQWtCSSxNQUFNLEVBQ2xEQywyQkFBMkJKLG1CQUFtQkcsTUFBTTtRQUUxRCxJQUFJRCw0QkFBNEJFLDBCQUEwQjtZQUN4RCxNQUFNQywwQkFBMEJDLElBQUFBLDhCQUF3QixFQUFDTixxQkFDbkRPLHlCQUF5QkQsSUFBQUEsOEJBQXdCLEVBQUNQLG9CQUNsRFMsd0JBQXdCQyxJQUFBQSw4QkFBd0IsRUFBQ0Ysd0JBQXdCRjtZQUUvRSxJQUFJRyx1QkFBdUI7Z0JBQ3pCLE1BQU1aLFVBQVVHLGtCQUFrQlcsS0FBSyxDQUFDLENBQUNDLGtCQUFrQkM7b0JBQ3pELE1BQU1DLG9CQUFvQmIsa0JBQWtCLENBQUNZLE1BQU0sRUFDN0NuQixlQUFlb0IsbUJBQ2ZyQixjQUFjbUIsa0JBQ2RmLFVBQVUsSUFBSSxDQUFDQyxTQUFTLENBQUNMLGFBQWFDLGlCQUFpQkM7b0JBRTdELElBQUlFLFNBQVM7d0JBQ1gsT0FBTztvQkFDVDtnQkFDRjtnQkFFQSxJQUFJQSxTQUFT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
|
|
88
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXNzL3ppcC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgbm9uVGVybWluYWxOb2RlUXVlcnksIGFyZUNoaWxkTm9kZXNDb25ncnVlbnQgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3Bhc3NcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgWmlwUGFzcyB7XG4gIHJ1bihnZW5lcmFsTm9kZSwgc3BlY2lmaWNOb2RlLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgICBsZXQgc3VjY2VzcztcblxuICAgIGNvbnN0IHZpc2l0ZWQgPSB0aGlzLnZpc2l0Tm9kZShnZW5lcmFsTm9kZSwgc3BlY2lmaWNOb2RlLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpO1xuXG4gICAgc3VjY2VzcyA9IHZpc2l0ZWQ7ICAvLy9cblxuICAgIHJldHVybiBzdWNjZXNzO1xuICB9XG5cbiAgZGVzY2VuZChnZW5lcmFsQ2hpbGROb2Rlcywgc3BlY2lmaWNDaGlsZE5vZGVzLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgICBsZXQgZGVzY2VuZGVkID0gZmFsc2U7XG5cbiAgICBjb25zdCB2aXNpdGVkID0gZ2VuZXJhbENoaWxkTm9kZXMuZXZlcnkoKGdlbmVyYWxDaGlsZE5vZGUsIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCBzcGVjaWZpY0NoaWxkTm9kZSA9IHNwZWNpZmljQ2hpbGROb2Rlc1tpbmRleF0sXG4gICAgICAgICAgICBzcGVjaWZpY05vZGUgPSBzcGVjaWZpY0NoaWxkTm9kZSwgLy8vXG4gICAgICAgICAgICBnZW5lcmFsTm9kZSA9IGdlbmVyYWxDaGlsZE5vZGUsIC8vL1xuICAgICAgICAgICAgdmlzaXRlZCA9IHRoaXMudmlzaXROb2RlKGdlbmVyYWxOb2RlLCBzcGVjaWZpY05vZGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cyk7XG5cbiAgICAgIGlmICh2aXNpdGVkKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKHZpc2l0ZWQpIHtcbiAgICAgIGRlc2NlbmRlZCA9IHRydWU7XG4gICAgfVxuXG5cbiAgICByZXR1cm4gZGVzY2VuZGVkO1xuICB9XG5cbiAgdmlzaXROb2RlKGdlbmVyYWxOb2RlLCBzcGVjaWZpY05vZGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICAgIGxldCB2aXNpdGVkID0gZmFsc2U7XG5cbiAgICBjb25zdCBnZW5lcmFsTm9kZVRlcm1pbmFsTm9kZSA9IGdlbmVyYWxOb2RlLmlzVGVybWluYWxOb2RlKCksXG4gICAgICAgICAgc3BlY2lmaWNOb2RlVGVybWluYWxOb2RlID0gc3BlY2lmaWNOb2RlLmlzVGVybWluYWxOb2RlKCksXG4gICAgICAgICAgZ2VuZXJhbE5vZGVOb25UZXJtaW5hbE5vZGUgPSBnZW5lcmFsTm9kZS5pc05vblRlcm1pbmFsTm9kZSgpLFxuICAgICAgICAgIHNwZWNpZmljTm9kZU5vblRlcm1pbmFsTm9kZSA9IHNwZWNpZmljTm9kZS5pc05vblRlcm1pbmFsTm9kZSgpO1xuXG4gICAgaWYgKGZhbHNlKSB7XG4gICAgICAvLy9cbiAgICB9IGVsc2UgaWYgKGdlbmVyYWxOb2RlVGVybWluYWxOb2RlICYmIHNwZWNpZmljTm9kZVRlcm1pbmFsTm9kZSkge1xuICAgICAgY29uc3QgZ2VuZXJhbFRlcm1pbmFsTm9kZSA9IGdlbmVyYWxOb2RlLCAgLy8vXG4gICAgICAgICAgICBzcGVjaWZpY1Rlcm1pbmFsTm9kZSA9IHNwZWNpZmljTm9kZTsgIC8vL1xuXG4gICAgICB2aXNpdGVkID0gdGhpcy52aXNpdFRlcm1pbmFsTm9kZShnZW5lcmFsVGVybWluYWxOb2RlLCBzcGVjaWZpY1Rlcm1pbmFsTm9kZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKTtcbiAgICB9IGVsc2UgaWYgKGdlbmVyYWxOb2RlTm9uVGVybWluYWxOb2RlICYmIHNwZWNpZmljTm9kZU5vblRlcm1pbmFsTm9kZSkge1xuICAgICAgY29uc3QgZ2VuZXJhbE5vblRlcm1pbmFsTm9kZSA9IGdlbmVyYWxOb2RlLCAgLy8vXG4gICAgICAgICAgICBzcGVjaWZpY05vblRlcm1pbmFsTm9kZSA9IHNwZWNpZmljTm9kZTsgLy8vXG5cbiAgICAgIHZpc2l0ZWQgPSB0aGlzLnZpc2l0Tm9uVGVybWluYWxOb2RlKGdlbmVyYWxOb25UZXJtaW5hbE5vZGUsIHNwZWNpZmljTm9uVGVybWluYWxOb2RlLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpO1xuICAgIH1cblxuICAgIHJldHVybiB2aXNpdGVkO1xuICB9XG5cbiAgdmlzaXRUZXJtaW5hbE5vZGUoZ2VuZXJhbFRlcm1pbmFsTm9kZSwgc3BlY2lmaWNUZXJtaW5hbE5vZGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykgeyAvLy9cbiAgICBsZXQgdmlzaXRlZDtcblxuICAgIHZpc2l0ZWQgPSB0cnVlO1xuXG4gICAgcmV0dXJuIHZpc2l0ZWQ7XG4gIH1cblxuICB2aXNpdE5vblRlcm1pbmFsTm9kZShnZW5lcmFsTm9uVGVybWluYWxOb2RlLCBzcGVjaWZpY05vblRlcm1pbmFsTm9kZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XG4gICAgbGV0IHZpc2l0ZWQgPSBmYWxzZTtcblxuICAgIGxldCB7IG1hcHMgfSA9IHRoaXMuY29uc3RydWN0b3I7XG5cbiAgICBtYXBzID0gWyAvLy9cbiAgICAgIC4uLm1hcHMsXG4gICAgICB7XG4gICAgICAgIGdlbmVyYWxOb2RlUXVlcnk6IG5vblRlcm1pbmFsTm9kZVF1ZXJ5LFxuICAgICAgICBzcGVjaWZpY05vZGVRdWVyeTogbm9uVGVybWluYWxOb2RlUXVlcnksXG4gICAgICAgIHJ1bjogKGdlbmVyYWxOb2RlLCBzcGVjaWZpY05vZGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykgPT4ge1xuICAgICAgICAgIGxldCB2aXNpdGVkID0gZmFsc2U7XG5cbiAgICAgICAgICBjb25zdCBnZW5lcmFsTm9uVGVybWluYWxOb2RlUnVsZU5hbWUgPSBnZW5lcmFsTm9uVGVybWluYWxOb2RlLmdldFJ1bGVOYW1lKCksIC8vL1xuICAgICAgICAgICAgICAgIHNwZWNpZmljTm9uVGVybWluYWxOb2RlUnVsZU5hbWUgPSBzcGVjaWZpY05vblRlcm1pbmFsTm9kZS5nZXRSdWxlTmFtZSgpOyAvLy9cblxuICAgICAgICAgIGlmIChnZW5lcmFsTm9uVGVybWluYWxOb2RlUnVsZU5hbWUgPT09IHNwZWNpZmljTm9uVGVybWluYWxOb2RlUnVsZU5hbWUpIHtcbiAgICAgICAgICAgIGNvbnN0IGdlbmVyYWxOb25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzID0gZ2VuZXJhbE5vblRlcm1pbmFsTm9kZS5nZXRDaGlsZE5vZGVzKCksXG4gICAgICAgICAgICAgICAgICBzcGVjaWZpY05vblRlcm1pbmFsTm9kZUNoaWxkTm9kZXMgPSBzcGVjaWZpY05vblRlcm1pbmFsTm9kZS5nZXRDaGlsZE5vZGVzKCksXG4gICAgICAgICAgICAgICAgICBnZW5lcmFsQ2hpbGROb2RlcyA9IGdlbmVyYWxOb25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzLCAvLy9cbiAgICAgICAgICAgICAgICAgIHNwZWNpZmljQ2hpbGROb2RlcyA9IHNwZWNpZmljTm9uVGVybWluYWxOb2RlQ2hpbGROb2RlcywgLy8vXG4gICAgICAgICAgICAgICAgICBjaGlsZE5vZGVzQ29uZ3J1ZW50ID0gYXJlQ2hpbGROb2Rlc0NvbmdydWVudChnZW5lcmFsQ2hpbGROb2Rlcywgc3BlY2lmaWNDaGlsZE5vZGVzKTtcblxuICAgICAgICAgICAgaWYgKGNoaWxkTm9kZXNDb25ncnVlbnQpIHtcbiAgICAgICAgICAgICAgY29uc3QgZGVzY2VuZGVkID0gdGhpcy5kZXNjZW5kKGdlbmVyYWxDaGlsZE5vZGVzLCBzcGVjaWZpY0NoaWxkTm9kZXMsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cyk7XG5cbiAgICAgICAgICAgICAgaWYgKGRlc2NlbmRlZCkge1xuICAgICAgICAgICAgICAgIHZpc2l0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHZpc2l0ZWQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBdXG5cbiAgICBtYXBzLnNvbWUoKG1hcCkgPT4ge1xuICAgICAgY29uc3QgeyBnZW5lcmFsTm9kZVF1ZXJ5LCBzcGVjaWZpY05vZGVRdWVyeSwgcnVuIH0gPSBtYXA7XG5cbiAgICAgIGNvbnN0IGdlbmVyYWxOb2RlID0gZ2VuZXJhbE5vZGVRdWVyeShnZW5lcmFsTm9uVGVybWluYWxOb2RlKSwgIC8vL1xuICAgICAgICAgICAgc3BlY2lmaWNOb2RlID0gc3BlY2lmaWNOb2RlUXVlcnkoc3BlY2lmaWNOb25UZXJtaW5hbE5vZGUpOyAgLy8vXG5cbiAgICAgIGlmICgoZ2VuZXJhbE5vZGUgIT09IG51bGwpICYmIChzcGVjaWZpY05vZGUgIT09IG51bGwpKSB7XG4gICAgICAgIGNvbnN0IHN1Y2Nlc3MgID0gcnVuKGdlbmVyYWxOb2RlLCBzcGVjaWZpY05vZGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cyk7XG5cbiAgICAgICAgdmlzaXRlZCA9IHN1Y2Nlc3M7ICAvLy9cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiB2aXNpdGVkO1xuICB9XG59XG4iXSwibmFtZXMiOlsiWmlwUGFzcyIsInJ1biIsImdlbmVyYWxOb2RlIiwic3BlY2lmaWNOb2RlIiwicmVtYWluaW5nQXJndW1lbnRzIiwic3VjY2VzcyIsInZpc2l0ZWQiLCJ2aXNpdE5vZGUiLCJkZXNjZW5kIiwiZ2VuZXJhbENoaWxkTm9kZXMiLCJzcGVjaWZpY0NoaWxkTm9kZXMiLCJkZXNjZW5kZWQiLCJldmVyeSIsImdlbmVyYWxDaGlsZE5vZGUiLCJpbmRleCIsInNwZWNpZmljQ2hpbGROb2RlIiwiZ2VuZXJhbE5vZGVUZXJtaW5hbE5vZGUiLCJpc1Rlcm1pbmFsTm9kZSIsInNwZWNpZmljTm9kZVRlcm1pbmFsTm9kZSIsImdlbmVyYWxOb2RlTm9uVGVybWluYWxOb2RlIiwiaXNOb25UZXJtaW5hbE5vZGUiLCJzcGVjaWZpY05vZGVOb25UZXJtaW5hbE5vZGUiLCJnZW5lcmFsVGVybWluYWxOb2RlIiwic3BlY2lmaWNUZXJtaW5hbE5vZGUiLCJ2aXNpdFRlcm1pbmFsTm9kZSIsImdlbmVyYWxOb25UZXJtaW5hbE5vZGUiLCJzcGVjaWZpY05vblRlcm1pbmFsTm9kZSIsInZpc2l0Tm9uVGVybWluYWxOb2RlIiwibWFwcyIsImdlbmVyYWxOb2RlUXVlcnkiLCJub25UZXJtaW5hbE5vZGVRdWVyeSIsInNwZWNpZmljTm9kZVF1ZXJ5IiwiZ2VuZXJhbE5vblRlcm1pbmFsTm9kZVJ1bGVOYW1lIiwiZ2V0UnVsZU5hbWUiLCJzcGVjaWZpY05vblRlcm1pbmFsTm9kZVJ1bGVOYW1lIiwiZ2VuZXJhbE5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZXMiLCJnZXRDaGlsZE5vZGVzIiwic3BlY2lmaWNOb25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzIiwiY2hpbGROb2Rlc0NvbmdydWVudCIsImFyZUNoaWxkTm9kZXNDb25ncnVlbnQiLCJzb21lIiwibWFwIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFJQTs7O2VBQXFCQTs7O3NCQUZ3QztBQUU5QyxNQUFNQTtJQUNuQkMsSUFBSUMsV0FBVyxFQUFFQyxZQUFZLEVBQUUsR0FBR0Msa0JBQWtCLEVBQUU7UUFDcEQsSUFBSUM7UUFFSixNQUFNQyxVQUFVLElBQUksQ0FBQ0MsU0FBUyxDQUFDTCxhQUFhQyxpQkFBaUJDO1FBRTdEQyxVQUFVQyxTQUFVLEdBQUc7UUFFdkIsT0FBT0Q7SUFDVDtJQUVBRyxRQUFRQyxpQkFBaUIsRUFBRUMsa0JBQWtCLEVBQUUsR0FBR04sa0JBQWtCLEVBQUU7UUFDcEUsSUFBSU8sWUFBWTtRQUVoQixNQUFNTCxVQUFVRyxrQkFBa0JHLEtBQUssQ0FBQyxDQUFDQyxrQkFBa0JDO1lBQ3pELE1BQU1DLG9CQUFvQkwsa0JBQWtCLENBQUNJLE1BQU0sRUFDN0NYLGVBQWVZLG1CQUNmYixjQUFjVyxrQkFDZFAsVUFBVSxJ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
|
package/lib/utilities/pass.js
CHANGED
|
@@ -9,26 +9,34 @@ function _export(target, all) {
|
|
|
9
9
|
});
|
|
10
10
|
}
|
|
11
11
|
_export(exports, {
|
|
12
|
-
get
|
|
13
|
-
return
|
|
12
|
+
get areChildNodesCongruent () {
|
|
13
|
+
return areChildNodesCongruent;
|
|
14
14
|
},
|
|
15
15
|
get nonTerminalNodeQuery () {
|
|
16
16
|
return nonTerminalNodeQuery;
|
|
17
|
-
},
|
|
18
|
-
get terminalNodeMapFromNodes () {
|
|
19
|
-
return terminalNodeMapFromNodes;
|
|
20
17
|
}
|
|
21
18
|
});
|
|
22
19
|
const _necessary = require("necessary");
|
|
23
20
|
const _query = require("../utilities/query");
|
|
24
21
|
const { match } = _necessary.arrayUtilities;
|
|
25
22
|
const nonTerminalNodeQuery = (0, _query.nodeQuery)("/*");
|
|
26
|
-
function
|
|
23
|
+
function areChildNodesCongruent(childNodesA, childNodesB) {
|
|
24
|
+
let areChildNodesCongruent = false;
|
|
25
|
+
const childNodesALength = childNodesA.length, childNodesBLength = childNodesB.length;
|
|
26
|
+
if (childNodesALength === childNodesBLength) {
|
|
27
|
+
const specificTerminalNodeMap = terminalNodeMapFromChildNodes(childNodesB), generalTerminalNodeMap = terminalNodeMapFromChildNodes(childNodesA), terminalNodeMapsEqual = areTerminalNodeMapsEqual(generalTerminalNodeMap, specificTerminalNodeMap);
|
|
28
|
+
if (terminalNodeMapsEqual) {
|
|
29
|
+
areChildNodesCongruent = true;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return areChildNodesCongruent;
|
|
33
|
+
}
|
|
34
|
+
function terminalNodeMapFromChildNodes(childNodes) {
|
|
27
35
|
const terminalNodeMap = {};
|
|
28
|
-
|
|
29
|
-
const
|
|
30
|
-
if (
|
|
31
|
-
const terminalNode =
|
|
36
|
+
childNodes.forEach((childNode, index)=>{
|
|
37
|
+
const childNodeTerminalNode = childNode.isTerminalNode();
|
|
38
|
+
if (childNodeTerminalNode) {
|
|
39
|
+
const terminalNode = childNode; //
|
|
32
40
|
terminalNodeMap[index] = terminalNode;
|
|
33
41
|
}
|
|
34
42
|
});
|
|
@@ -53,4 +61,4 @@ function areTerminalNodeMapsEqual(generalTerminalNodeMap, specificTerminalNodeMa
|
|
|
53
61
|
return terminalNodeMapsEqual;
|
|
54
62
|
}
|
|
55
63
|
|
|
56
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvcGFzcy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgYXJyYXlVdGlsaXRpZXMgfSBmcm9tIFwibmVjZXNzYXJ5XCI7XG5cbmltcG9ydCB7IG5vZGVRdWVyeSB9IGZyb20gXCIuLi91dGlsaXRpZXMvcXVlcnlcIjtcblxuY29uc3QgeyBtYXRjaCB9ID0gYXJyYXlVdGlsaXRpZXM7XG5cbmV4cG9ydCBjb25zdCBub25UZXJtaW5hbE5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi8qXCIpO1xuXG5leHBvcnQgZnVuY3Rpb24gYXJlQ2hpbGROb2Rlc0NvbmdydWVudChjaGlsZE5vZGVzQSwgY2hpbGROb2Rlc0IpIHtcbiAgbGV0IGFyZUNoaWxkTm9kZXNDb25ncnVlbnQgPSBmYWxzZTtcblxuICBjb25zdCBjaGlsZE5vZGVzQUxlbmd0aCA9IGNoaWxkTm9kZXNBLmxlbmd0aCxcbiAgICAgICAgY2hpbGROb2Rlc0JMZW5ndGggPSBjaGlsZE5vZGVzQi5sZW5ndGg7XG5cbiAgaWYgKGNoaWxkTm9kZXNBTGVuZ3RoID09PSBjaGlsZE5vZGVzQkxlbmd0aCkge1xuICAgIGNvbnN0IHNwZWNpZmljVGVybWluYWxOb2RlTWFwID0gdGVybWluYWxOb2RlTWFwRnJvbUNoaWxkTm9kZXMoY2hpbGROb2Rlc0IpLFxuICAgICAgICAgIGdlbmVyYWxUZXJtaW5hbE5vZGVNYXAgPSB0ZXJtaW5hbE5vZGVNYXBGcm9tQ2hpbGROb2RlcyhjaGlsZE5vZGVzQSksXG4gICAgICAgICAgdGVybWluYWxOb2RlTWFwc0VxdWFsID0gYXJlVGVybWluYWxOb2RlTWFwc0VxdWFsKGdlbmVyYWxUZXJtaW5hbE5vZGVNYXAsIHNwZWNpZmljVGVybWluYWxOb2RlTWFwKTtcblxuICAgIGlmICh0ZXJtaW5hbE5vZGVNYXBzRXF1YWwpIHtcbiAgICAgIGFyZUNoaWxkTm9kZXNDb25ncnVlbnQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhcmVDaGlsZE5vZGVzQ29uZ3J1ZW50O1xufVxuXG5mdW5jdGlvbiB0ZXJtaW5hbE5vZGVNYXBGcm9tQ2hpbGROb2RlcyhjaGlsZE5vZGVzKSB7XG4gIGNvbnN0IHRlcm1pbmFsTm9kZU1hcCA9IHt9O1xuXG4gIGNoaWxkTm9kZXMuZm9yRWFjaCgoY2hpbGROb2RlLCBpbmRleCkgPT4ge1xuICAgIGNvbnN0IGNoaWxkTm9kZVRlcm1pbmFsTm9kZSA9IGNoaWxkTm9kZS5pc1Rlcm1pbmFsTm9kZSgpO1xuXG4gICAgaWYgKGNoaWxkTm9kZVRlcm1pbmFsTm9kZSkge1xuICAgICAgY29uc3QgdGVybWluYWxOb2RlID0gY2hpbGROb2RlOyAgLy9cblxuICAgICAgdGVybWluYWxOb2RlTWFwW2luZGV4XSA9IHRlcm1pbmFsTm9kZTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiB0ZXJtaW5hbE5vZGVNYXA7XG59XG5cbmZ1bmN0aW9uIGFyZVRlcm1pbmFsTm9kZU1hcHNFcXVhbChnZW5lcmFsVGVybWluYWxOb2RlTWFwLCBzcGVjaWZpY1Rlcm1pbmFsTm9kZU1hcCkge1xuICBsZXQgdGVybWluYWxOb2RlTWFwc0VxdWFsID0gZmFsc2U7XG5cbiAgY29uc3QgZ2VuZXJhbEluZGV4ZXMgPSBPYmplY3Qua2V5cyhnZW5lcmFsVGVybWluYWxOb2RlTWFwKSwgLy8vXG4gICAgICAgIHNwZWNpZmljSW5kZXhlcyA9IE9iamVjdC5rZXlzKHNwZWNpZmljVGVybWluYWxOb2RlTWFwKSwgLy8vXG4gICAgICAgIHRlcm1pbmFsTm9kZU1hcEtleXNNYXRjaCA9IG1hdGNoKGdlbmVyYWxJbmRleGVzLCBzcGVjaWZpY0luZGV4ZXMsIChnZW5lcmFsSW5kZXgsIHNwZWNpZmljSW5kZXgpID0+IHtcbiAgICAgICAgICBpZiAoZ2VuZXJhbEluZGV4ID09PSBzcGVjaWZpY0luZGV4KSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gIGlmICh0ZXJtaW5hbE5vZGVNYXBLZXlzTWF0Y2gpIHtcbiAgICBjb25zdCBnZW5lcmFsVGVybWluYWxOb2RlcyA9IE9iamVjdC52YWx1ZXMoZ2VuZXJhbFRlcm1pbmFsTm9kZU1hcCksIC8vL1xuICAgICAgICAgIHNwZWNpZmljVGVybWluYWxOb2RlcyA9IE9iamVjdC52YWx1ZXMoc3BlY2lmaWNUZXJtaW5hbE5vZGVNYXApLCAvLy9cbiAgICAgICAgICB0ZXJtaW5hbE5vZGVNYXBWYWx1ZXNNYXRjaCA9IG1hdGNoKGdlbmVyYWxUZXJtaW5hbE5vZGVzLCBzcGVjaWZpY1Rlcm1pbmFsTm9kZXMsIChnZW5lcmFsVGVybWluYWxOb2RlLCBzcGVjaWZpY1Rlcm1pbmFsTm9kZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZ2VuZXJhbFRlcm1pbmFsTm9kZU1hdGNoZXNTcGVjaWZpY1Rlcm1pbmFsTm9kZSA9IGdlbmVyYWxUZXJtaW5hbE5vZGUubWF0Y2goc3BlY2lmaWNUZXJtaW5hbE5vZGUpO1xuXG4gICAgICAgICAgICBpZiAoZ2VuZXJhbFRlcm1pbmFsTm9kZU1hdGNoZXNTcGVjaWZpY1Rlcm1pbmFsTm9kZSkge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcblxuICAgIHRlcm1pbmFsTm9kZU1hcHNFcXVhbCA9IHRlcm1pbmFsTm9kZU1hcFZhbHVlc01hdGNoOyAvLy9cbiAgfVxuXG4gIHJldHVybiB0ZXJtaW5hbE5vZGVNYXBzRXF1YWw7XG59XG4iXSwibmFtZXMiOlsiYXJlQ2hpbGROb2Rlc0NvbmdydWVudCIsIm5vblRlcm1pbmFsTm9kZVF1ZXJ5IiwibWF0Y2giLCJhcnJheVV0aWxpdGllcyIsIm5vZGVRdWVyeSIsImNoaWxkTm9kZXNBIiwiY2hpbGROb2Rlc0IiLCJjaGlsZE5vZGVzQUxlbmd0aCIsImxlbmd0aCIsImNoaWxkTm9kZXNCTGVuZ3RoIiwic3BlY2lmaWNUZXJtaW5hbE5vZGVNYXAiLCJ0ZXJtaW5hbE5vZGVNYXBGcm9tQ2hpbGROb2RlcyIsImdlbmVyYWxUZXJtaW5hbE5vZGVNYXAiLCJ0ZXJtaW5hbE5vZGVNYXBzRXF1YWwiLCJhcmVUZXJtaW5hbE5vZGVNYXBzRXF1YWwiLCJjaGlsZE5vZGVzIiwidGVybWluYWxOb2RlTWFwIiwiZm9yRWFjaCIsImNoaWxkTm9kZSIsImluZGV4IiwiY2hpbGROb2RlVGVybWluYWxOb2RlIiwiaXNUZXJtaW5hbE5vZGUiLCJ0ZXJtaW5hbE5vZGUiLCJnZW5lcmFsSW5kZXhlcyIsIk9iamVjdCIsImtleXMiLCJzcGVjaWZpY0luZGV4ZXMiLCJ0ZXJtaW5hbE5vZGVNYXBLZXlzTWF0Y2giLCJnZW5lcmFsSW5kZXgiLCJzcGVjaWZpY0luZGV4IiwiZ2VuZXJhbFRlcm1pbmFsTm9kZXMiLCJ2YWx1ZXMiLCJzcGVjaWZpY1Rlcm1pbmFsTm9kZXMiLCJ0ZXJtaW5hbE5vZGVNYXBWYWx1ZXNNYXRjaCIsImdlbmVyYWxUZXJtaW5hbE5vZGUiLCJzcGVjaWZpY1Rlcm1pbmFsTm9kZSIsImdlbmVyYWxUZXJtaW5hbE5vZGVNYXRjaGVzU3BlY2lmaWNUZXJtaW5hbE5vZGUiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQVVnQkE7ZUFBQUE7O1FBRkhDO2VBQUFBOzs7MkJBTmtCO3VCQUVMO0FBRTFCLE1BQU0sRUFBRUMsS0FBSyxFQUFFLEdBQUdDLHlCQUFjO0FBRXpCLE1BQU1GLHVCQUF1QkcsSUFBQUEsZ0JBQVMsRUFBQztBQUV2QyxTQUFTSix1QkFBdUJLLFdBQVcsRUFBRUMsV0FBVztJQUM3RCxJQUFJTix5QkFBeUI7SUFFN0IsTUFBTU8sb0JBQW9CRixZQUFZRyxNQUFNLEVBQ3RDQyxvQkFBb0JILFlBQVlFLE1BQU07SUFFNUMsSUFBSUQsc0JBQXNCRSxtQkFBbUI7UUFDM0MsTUFBTUMsMEJBQTBCQyw4QkFBOEJMLGNBQ3hETSx5QkFBeUJELDhCQUE4Qk4sY0FDdkRRLHdCQUF3QkMseUJBQXlCRix3QkFBd0JGO1FBRS9FLElBQUlHLHVCQUF1QjtZQUN6QmIseUJBQXlCO1FBQzNCO0lBQ0Y7SUFFQSxPQUFPQTtBQUNUO0FBRUEsU0FBU1csOEJBQThCSSxVQUFVO0lBQy9DLE1BQU1DLGtCQUFrQixDQUFDO0lBRXpCRCxXQUFXRSxPQUFPLENBQUMsQ0FBQ0MsV0FBV0M7UUFDN0IsTUFBTUMsd0JBQXdCRixVQUFVRyxjQUFjO1FBRXRELElBQUlELHVCQUF1QjtZQUN6QixNQUFNRSxlQUFlSixXQUFZLEVBQUU7WUFFbkNGLGVBQWUsQ0FBQ0csTUFBTSxHQUFHRztRQUMzQjtJQUNGO0lBRUEsT0FBT047QUFDVDtBQUVBLFNBQVNGLHlCQUF5QkYsc0JBQXNCLEVBQUVGLHVCQUF1QjtJQUMvRSxJQUFJRyx3QkFBd0I7SUFFNUIsTUFBTVUsaUJBQWlCQyxPQUFPQyxJQUFJLENBQUNiLHlCQUM3QmMsa0JBQWtCRixPQUFPQyxJQUFJLENBQUNmLDBCQUM5QmlCLDJCQUEyQnpCLE1BQU1xQixnQkFBZ0JHLGlCQUFpQixDQUFDRSxjQUFjQztRQUMvRSxJQUFJRCxpQkFBaUJDLGVBQWU7WUFDbEMsT0FBTztRQUNUO0lBQ0Y7SUFFTixJQUFJRiwwQkFBMEI7UUFDNUIsTUFBTUcsdUJBQXVCTixPQUFPTyxNQUFNLENBQUNuQix5QkFDckNvQix3QkFBd0JSLE9BQU9PLE1BQU0sQ0FBQ3JCLDBCQUN0Q3VCLDZCQUE2Qi9CLE1BQU00QixzQkFBc0JFLHVCQUF1QixDQUFDRSxxQkFBcUJDO1lBQ3BHLE1BQU1DLGlEQUFpREYsb0JBQW9CaEMsS0FBSyxDQUFDaUM7WUFFakYsSUFBSUMsZ0RBQWdEO2dCQUNsRCxPQUFPO1lBQ1Q7UUFDRjtRQUVOdkIsd0JBQXdCb0IsNEJBQTRCLEdBQUc7SUFDekQ7SUFFQSxPQUFPcEI7QUFDVCJ9
|
package/package.json
CHANGED
package/src/index.js
CHANGED
|
@@ -12,6 +12,7 @@ export { default as ZipPass } from "./pass/zip";
|
|
|
12
12
|
export { default as AsyncPass } from "./pass/async";
|
|
13
13
|
export { default as SimplePass } from "./pass/simple";
|
|
14
14
|
export { default as ForwardPass } from "./pass/forward";
|
|
15
|
+
export { default as ForwardZipPass } from "./pass/forwardZip";
|
|
15
16
|
export { default as EquivalencePass } from "./pass/equivalence";
|
|
16
17
|
|
|
17
18
|
export { default as nodeUtilities } from "./utilities/node";
|
package/src/pass/equivalence.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import { nonTerminalNodeQuery,
|
|
3
|
+
import { nonTerminalNodeQuery, areChildNodesCongruent } from "../utilities/pass";
|
|
4
4
|
|
|
5
5
|
export default class EquivalencePass {
|
|
6
6
|
run(leftNode, rightNode, ...remainingArguments) {
|
|
@@ -14,29 +14,18 @@ export default class EquivalencePass {
|
|
|
14
14
|
}
|
|
15
15
|
|
|
16
16
|
descend(leftChildNodes, rightChildNodes, ...remainingArguments) {
|
|
17
|
-
let descended
|
|
17
|
+
let descended;
|
|
18
18
|
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
descended = leftChildNodes.every((leftChildNode, index) => {
|
|
20
|
+
const rightChildNode = rightChildNodes[index],
|
|
21
|
+
leftNode = leftChildNode, ///
|
|
22
|
+
rightNode = rightChildNode, ///
|
|
23
|
+
visited = this.visitNode(leftNode, rightNode, ...remainingArguments);
|
|
21
24
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
rightTerminalNodeMap = terminalNodeMapFromNodes(rightChildNodes),
|
|
25
|
-
terminalNodeMapsEqual = areTerminalNodeMapsEqual(leftTerminalNodeMap, rightTerminalNodeMap);
|
|
26
|
-
|
|
27
|
-
if (terminalNodeMapsEqual) {
|
|
28
|
-
descended = leftChildNodes.every((leftChildNode, index) => {
|
|
29
|
-
const rightChildNode = rightChildNodes[index],
|
|
30
|
-
leftNode = leftChildNode, ///
|
|
31
|
-
rightNode = rightChildNode, ///
|
|
32
|
-
visited = this.visitNode(leftNode, rightNode, ...remainingArguments);
|
|
33
|
-
|
|
34
|
-
if (visited) {
|
|
35
|
-
return true;
|
|
36
|
-
}
|
|
37
|
-
});
|
|
25
|
+
if (visited) {
|
|
26
|
+
return true;
|
|
38
27
|
}
|
|
39
|
-
}
|
|
28
|
+
});
|
|
40
29
|
|
|
41
30
|
return descended;
|
|
42
31
|
}
|
|
@@ -95,10 +84,14 @@ export default class EquivalencePass {
|
|
|
95
84
|
rightNonTerminalNodeChildNodes = rightNonTerminalNode.getChildNodes(),
|
|
96
85
|
leftChildNodes = leftNonTerminalNodeChildNodes, ///
|
|
97
86
|
rightChildNodes = rightNonTerminalNodeChildNodes, ///
|
|
98
|
-
|
|
87
|
+
childNodesCongruent = areChildNodesCongruent(leftChildNodes, rightChildNodes);
|
|
88
|
+
|
|
89
|
+
if (childNodesCongruent) {
|
|
90
|
+
const descended = this.descend(leftChildNodes, rightChildNodes, ...remainingArguments);
|
|
99
91
|
|
|
100
|
-
|
|
101
|
-
|
|
92
|
+
if (descended) {
|
|
93
|
+
visited = true;
|
|
94
|
+
}
|
|
102
95
|
}
|
|
103
96
|
}
|
|
104
97
|
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { nonTerminalNodeQuery, areChildNodesCongruent } from "../utilities/pass";
|
|
4
|
+
|
|
5
|
+
export default class ForwardZipPass {
|
|
6
|
+
run(generalNode, specificNode, ...remainingArguments) {
|
|
7
|
+
let success;
|
|
8
|
+
|
|
9
|
+
const visited = this.visitNode(generalNode, specificNode, ...remainingArguments);
|
|
10
|
+
|
|
11
|
+
success = visited; ///
|
|
12
|
+
|
|
13
|
+
return success;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
descend(index, generalChildNodes, specificChildNodes, ...remainingArguments) {
|
|
17
|
+
let descendedForward = false;
|
|
18
|
+
|
|
19
|
+
const descendForward = remainingArguments.pop(), ///
|
|
20
|
+
generalChildNodesLength = generalChildNodes.length;
|
|
21
|
+
|
|
22
|
+
if (index === generalChildNodesLength) {
|
|
23
|
+
descendedForward = descendForward();
|
|
24
|
+
} else {
|
|
25
|
+
const generalChildNode = generalChildNodes[index],
|
|
26
|
+
specificChildNode = specificChildNodes[index],
|
|
27
|
+
generalNode = generalChildNode, ///
|
|
28
|
+
specificNode = specificChildNode, ///
|
|
29
|
+
visited = this.visitNode(generalNode, specificNode, ...remainingArguments, () => {
|
|
30
|
+
remainingArguments.push(descendForward);
|
|
31
|
+
|
|
32
|
+
const aheadIndex = index + 1,
|
|
33
|
+
descendedForward = this.descend(aheadIndex, generalChildNodes, specificChildNodes, ...remainingArguments);
|
|
34
|
+
|
|
35
|
+
return descendedForward;
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
if (visited) {
|
|
39
|
+
descendedForward = true;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
return descendedForward;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
visitNode(generalNode, specificNode, ...remainingArguments) {
|
|
47
|
+
let visited = false;
|
|
48
|
+
|
|
49
|
+
const generalNodeTerminalNode = generalNode.isTerminalNode(),
|
|
50
|
+
specificNodeTerminalNode = specificNode.isTerminalNode(),
|
|
51
|
+
generalNodeNonTerminalNode = generalNode.isNonTerminalNode(),
|
|
52
|
+
specificNodeNonTerminalNode = specificNode.isNonTerminalNode();
|
|
53
|
+
|
|
54
|
+
if (false) {
|
|
55
|
+
///
|
|
56
|
+
} else if (generalNodeTerminalNode && specificNodeTerminalNode) {
|
|
57
|
+
const generalTerminalNode = generalNode, ///
|
|
58
|
+
specificTerminalNode = specificNode; ///
|
|
59
|
+
|
|
60
|
+
visited = this.visitTerminalNode(generalTerminalNode, specificTerminalNode, ...remainingArguments);
|
|
61
|
+
} else if (generalNodeNonTerminalNode && specificNodeNonTerminalNode) {
|
|
62
|
+
const generalNonTerminalNode = generalNode, ///
|
|
63
|
+
specificNonTerminalNode = specificNode; ///
|
|
64
|
+
|
|
65
|
+
visited = this.visitNonTerminalNode(generalNonTerminalNode, specificNonTerminalNode, ...remainingArguments);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
return visited;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
visitTerminalNode(generalTerminalNode, specificTerminalNode, ...remainingArguments) {
|
|
72
|
+
let visited = false;
|
|
73
|
+
|
|
74
|
+
const descendForward = remainingArguments.pop(), ///
|
|
75
|
+
descendedForward = descendForward();
|
|
76
|
+
|
|
77
|
+
if (descendedForward) {
|
|
78
|
+
visited = true;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
remainingArguments.push(descendForward);
|
|
82
|
+
|
|
83
|
+
return visited;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
visitNonTerminalNode(generalNonTerminalNode, specificNonTerminalNode, ...remainingArguments) {
|
|
87
|
+
let visited = false;
|
|
88
|
+
|
|
89
|
+
let { maps } = this.constructor;
|
|
90
|
+
|
|
91
|
+
maps = [ ///
|
|
92
|
+
...maps,
|
|
93
|
+
{
|
|
94
|
+
generalNodeQuery: nonTerminalNodeQuery,
|
|
95
|
+
specificNodeQuery: nonTerminalNodeQuery,
|
|
96
|
+
run: (generalNode, specificNode, ...remainingArguments) => {
|
|
97
|
+
let visited = false;
|
|
98
|
+
|
|
99
|
+
const generalNonTerminalNodeRuleName = generalNonTerminalNode.getRuleName(), ///
|
|
100
|
+
specificNonTerminalNodeRuleName = specificNonTerminalNode.getRuleName(); ///
|
|
101
|
+
|
|
102
|
+
if (generalNonTerminalNodeRuleName === specificNonTerminalNodeRuleName) {
|
|
103
|
+
const index = 0,
|
|
104
|
+
generalNonTerminalNodeChildNodes = generalNonTerminalNode.getChildNodes(),
|
|
105
|
+
specificNonTerminalNodeChildNodes = specificNonTerminalNode.getChildNodes(),
|
|
106
|
+
generalChildNodes = generalNonTerminalNodeChildNodes, ///
|
|
107
|
+
specificChildNodes = specificNonTerminalNodeChildNodes, ///
|
|
108
|
+
childNodesCongruent = areChildNodesCongruent(generalChildNodes, specificChildNodes);
|
|
109
|
+
|
|
110
|
+
if (childNodesCongruent) {
|
|
111
|
+
const descended = this.descend(index, generalChildNodes, specificChildNodes, ...remainingArguments);
|
|
112
|
+
|
|
113
|
+
if (descended) {
|
|
114
|
+
visited = true;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
return visited;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
]
|
|
123
|
+
|
|
124
|
+
maps.some((map) => {
|
|
125
|
+
const { generalNodeQuery, specificNodeQuery, run } = map;
|
|
126
|
+
|
|
127
|
+
const generalNode = generalNodeQuery(generalNonTerminalNode), ///
|
|
128
|
+
specificNode = specificNodeQuery(specificNonTerminalNode); ///
|
|
129
|
+
|
|
130
|
+
if ((generalNode !== null) && (specificNode !== null)) {
|
|
131
|
+
const success = run(generalNode, specificNode, ...remainingArguments);
|
|
132
|
+
|
|
133
|
+
visited = success; ///
|
|
134
|
+
|
|
135
|
+
return true;
|
|
136
|
+
}
|
|
137
|
+
});
|
|
138
|
+
|
|
139
|
+
return visited;
|
|
140
|
+
}
|
|
141
|
+
}
|
package/src/pass/zip.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import { nonTerminalNodeQuery,
|
|
3
|
+
import { nonTerminalNodeQuery, areChildNodesCongruent } from "../utilities/pass";
|
|
4
4
|
|
|
5
5
|
export default class ZipPass {
|
|
6
6
|
run(generalNode, specificNode, ...remainingArguments) {
|
|
@@ -16,32 +16,22 @@ export default class ZipPass {
|
|
|
16
16
|
descend(generalChildNodes, specificChildNodes, ...remainingArguments) {
|
|
17
17
|
let descended = false;
|
|
18
18
|
|
|
19
|
-
const
|
|
20
|
-
|
|
19
|
+
const visited = generalChildNodes.every((generalChildNode, index) => {
|
|
20
|
+
const specificChildNode = specificChildNodes[index],
|
|
21
|
+
specificNode = specificChildNode, ///
|
|
22
|
+
generalNode = generalChildNode, ///
|
|
23
|
+
visited = this.visitNode(generalNode, specificNode, ...remainingArguments);
|
|
21
24
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
generalTerminalNodeMap = terminalNodeMapFromNodes(generalChildNodes),
|
|
25
|
-
terminalNodeMapsEqual = areTerminalNodeMapsEqual(generalTerminalNodeMap, specificTerminalNodeMap);
|
|
26
|
-
|
|
27
|
-
if (terminalNodeMapsEqual) {
|
|
28
|
-
const visited = generalChildNodes.every((generalChildNode, index) => {
|
|
29
|
-
const specificChildNode = specificChildNodes[index],
|
|
30
|
-
specificNode = specificChildNode, ///
|
|
31
|
-
generalNode = generalChildNode, ///
|
|
32
|
-
visited = this.visitNode(generalNode, specificNode, ...remainingArguments);
|
|
33
|
-
|
|
34
|
-
if (visited) {
|
|
35
|
-
return true;
|
|
36
|
-
}
|
|
37
|
-
});
|
|
38
|
-
|
|
39
|
-
if (visited) {
|
|
40
|
-
descended = true;
|
|
41
|
-
}
|
|
25
|
+
if (visited) {
|
|
26
|
+
return true;
|
|
42
27
|
}
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
if (visited) {
|
|
31
|
+
descended = true;
|
|
43
32
|
}
|
|
44
33
|
|
|
34
|
+
|
|
45
35
|
return descended;
|
|
46
36
|
}
|
|
47
37
|
|
|
@@ -99,10 +89,14 @@ export default class ZipPass {
|
|
|
99
89
|
specificNonTerminalNodeChildNodes = specificNonTerminalNode.getChildNodes(),
|
|
100
90
|
generalChildNodes = generalNonTerminalNodeChildNodes, ///
|
|
101
91
|
specificChildNodes = specificNonTerminalNodeChildNodes, ///
|
|
102
|
-
|
|
92
|
+
childNodesCongruent = areChildNodesCongruent(generalChildNodes, specificChildNodes);
|
|
93
|
+
|
|
94
|
+
if (childNodesCongruent) {
|
|
95
|
+
const descended = this.descend(generalChildNodes, specificChildNodes, ...remainingArguments);
|
|
103
96
|
|
|
104
|
-
|
|
105
|
-
|
|
97
|
+
if (descended) {
|
|
98
|
+
visited = true;
|
|
99
|
+
}
|
|
106
100
|
}
|
|
107
101
|
}
|
|
108
102
|
|
package/src/utilities/pass.js
CHANGED
|
@@ -8,14 +8,33 @@ const { match } = arrayUtilities;
|
|
|
8
8
|
|
|
9
9
|
export const nonTerminalNodeQuery = nodeQuery("/*");
|
|
10
10
|
|
|
11
|
-
export function
|
|
11
|
+
export function areChildNodesCongruent(childNodesA, childNodesB) {
|
|
12
|
+
let areChildNodesCongruent = false;
|
|
13
|
+
|
|
14
|
+
const childNodesALength = childNodesA.length,
|
|
15
|
+
childNodesBLength = childNodesB.length;
|
|
16
|
+
|
|
17
|
+
if (childNodesALength === childNodesBLength) {
|
|
18
|
+
const specificTerminalNodeMap = terminalNodeMapFromChildNodes(childNodesB),
|
|
19
|
+
generalTerminalNodeMap = terminalNodeMapFromChildNodes(childNodesA),
|
|
20
|
+
terminalNodeMapsEqual = areTerminalNodeMapsEqual(generalTerminalNodeMap, specificTerminalNodeMap);
|
|
21
|
+
|
|
22
|
+
if (terminalNodeMapsEqual) {
|
|
23
|
+
areChildNodesCongruent = true;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
return areChildNodesCongruent;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
function terminalNodeMapFromChildNodes(childNodes) {
|
|
12
31
|
const terminalNodeMap = {};
|
|
13
32
|
|
|
14
|
-
|
|
15
|
-
const
|
|
33
|
+
childNodes.forEach((childNode, index) => {
|
|
34
|
+
const childNodeTerminalNode = childNode.isTerminalNode();
|
|
16
35
|
|
|
17
|
-
if (
|
|
18
|
-
const terminalNode =
|
|
36
|
+
if (childNodeTerminalNode) {
|
|
37
|
+
const terminalNode = childNode; //
|
|
19
38
|
|
|
20
39
|
terminalNodeMap[index] = terminalNode;
|
|
21
40
|
}
|
|
@@ -24,7 +43,7 @@ export function terminalNodeMapFromNodes(nodes) {
|
|
|
24
43
|
return terminalNodeMap;
|
|
25
44
|
}
|
|
26
45
|
|
|
27
|
-
|
|
46
|
+
function areTerminalNodeMapsEqual(generalTerminalNodeMap, specificTerminalNodeMap) {
|
|
28
47
|
let terminalNodeMapsEqual = false;
|
|
29
48
|
|
|
30
49
|
const generalIndexes = Object.keys(generalTerminalNodeMap), ///
|