occam-languages 0.0.208 → 0.0.209
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/utilities/pass.js +19 -34
- package/package.json +1 -1
- package/src/utilities/pass.js +23 -48
package/lib/utilities/pass.js
CHANGED
|
@@ -21,44 +21,29 @@ const _query = require("../utilities/query");
|
|
|
21
21
|
const { match } = _necessary.arrayUtilities;
|
|
22
22
|
const nonTerminalNodeQuery = (0, _query.nodeQuery)("/*");
|
|
23
23
|
function areChildNodesCongruent(childNodesA, childNodesB) {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
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) {
|
|
35
|
-
const terminalNodeMap = {};
|
|
36
|
-
childNodes.forEach((childNode, index)=>{
|
|
37
|
-
const childNodeTerminalNode = childNode.isTerminalNode();
|
|
38
|
-
if (childNodeTerminalNode) {
|
|
39
|
-
const terminalNode = childNode; //
|
|
40
|
-
terminalNodeMap[index] = terminalNode;
|
|
41
|
-
}
|
|
42
|
-
});
|
|
43
|
-
return terminalNodeMap;
|
|
44
|
-
}
|
|
45
|
-
function areTerminalNodeMapsEqual(generalTerminalNodeMap, specificTerminalNodeMap) {
|
|
46
|
-
let terminalNodeMapsEqual = false;
|
|
47
|
-
const generalIndexes = Object.keys(generalTerminalNodeMap), specificIndexes = Object.keys(specificTerminalNodeMap), terminalNodeMapKeysMatch = match(generalIndexes, specificIndexes, (generalIndex, specificIndex)=>{
|
|
48
|
-
if (generalIndex === specificIndex) {
|
|
24
|
+
const childNodesCongruent = match(childNodesA, childNodesB, (childNodeA, childNodeB)=>{
|
|
25
|
+
const childNodeCongruent = isChildNodeCongruent(childNodeA, childNodeB);
|
|
26
|
+
if (childNodeCongruent) {
|
|
49
27
|
return true;
|
|
50
28
|
}
|
|
51
29
|
});
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
30
|
+
return childNodesCongruent;
|
|
31
|
+
}
|
|
32
|
+
function isChildNodeCongruent(childNodeA, childNodeB) {
|
|
33
|
+
let childNodeCongruent = false;
|
|
34
|
+
const childNodeANonTerminalNode = childNodeA.isNonTerminalNode(), childNodeBNonTerminalNode = childNodeB.isNonTerminalNode();
|
|
35
|
+
if (childNodeANonTerminalNode && childNodeBNonTerminalNode) {
|
|
36
|
+
childNodeCongruent = true;
|
|
37
|
+
} else {
|
|
38
|
+
const childNodeATerminalNode = !childNodeANonTerminalNode, childNodeBTerminalNode = !childNodeBNonTerminalNode;
|
|
39
|
+
if (childNodeATerminalNode && childNodeBTerminalNode) {
|
|
40
|
+
const terminalNodeA = childNodeA, terminalNodeB = childNodeB, terminalNodeAMatchesTerminalNodeB = terminalNodeA.match(terminalNodeB);
|
|
41
|
+
if (terminalNodeAMatchesTerminalNodeB) {
|
|
42
|
+
childNodeCongruent = true;
|
|
57
43
|
}
|
|
58
|
-
}
|
|
59
|
-
terminalNodeMapsEqual = terminalNodeMapValuesMatch; ///
|
|
44
|
+
}
|
|
60
45
|
}
|
|
61
|
-
return
|
|
46
|
+
return childNodeCongruent;
|
|
62
47
|
}
|
|
63
48
|
|
|
64
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvcGFzcy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgYXJyYXlVdGlsaXRpZXMgfSBmcm9tIFwibmVjZXNzYXJ5XCI7XG5cbmltcG9ydCB7IG5vZGVRdWVyeSB9IGZyb20gXCIuLi91dGlsaXRpZXMvcXVlcnlcIjtcblxuY29uc3QgeyBtYXRjaCB9ID0gYXJyYXlVdGlsaXRpZXM7XG5cbmV4cG9ydCBjb25zdCBub25UZXJtaW5hbE5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi8qXCIpO1xuXG5leHBvcnQgZnVuY3Rpb24gYXJlQ2hpbGROb2Rlc0NvbmdydWVudChjaGlsZE5vZGVzQSwgY2hpbGROb2Rlc0IpIHtcbiAgY29uc3QgY2hpbGROb2Rlc0NvbmdydWVudCA9IG1hdGNoKGNoaWxkTm9kZXNBLCBjaGlsZE5vZGVzQiwgKGNoaWxkTm9kZUEsIGNoaWxkTm9kZUIpID0+IHtcbiAgICBjb25zdCBjaGlsZE5vZGVDb25ncnVlbnQgPSBpc0NoaWxkTm9kZUNvbmdydWVudChjaGlsZE5vZGVBLCBjaGlsZE5vZGVCKTtcblxuICAgIGlmIChjaGlsZE5vZGVDb25ncnVlbnQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIGNoaWxkTm9kZXNDb25ncnVlbnQ7XG59XG5cbmZ1bmN0aW9uIGlzQ2hpbGROb2RlQ29uZ3J1ZW50KGNoaWxkTm9kZUEsIGNoaWxkTm9kZUIpIHtcbiAgbGV0IGNoaWxkTm9kZUNvbmdydWVudCA9IGZhbHNlO1xuXG4gIGNvbnN0IGNoaWxkTm9kZUFOb25UZXJtaW5hbE5vZGUgPSBjaGlsZE5vZGVBLmlzTm9uVGVybWluYWxOb2RlKCksXG4gICAgICAgIGNoaWxkTm9kZUJOb25UZXJtaW5hbE5vZGUgPSBjaGlsZE5vZGVCLmlzTm9uVGVybWluYWxOb2RlKCk7XG5cbiAgaWYgKGNoaWxkTm9kZUFOb25UZXJtaW5hbE5vZGUgJiYgY2hpbGROb2RlQk5vblRlcm1pbmFsTm9kZSkge1xuICAgIGNoaWxkTm9kZUNvbmdydWVudCA9IHRydWU7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgY2hpbGROb2RlQVRlcm1pbmFsTm9kZSA9ICFjaGlsZE5vZGVBTm9uVGVybWluYWxOb2RlLFxuICAgICAgICAgIGNoaWxkTm9kZUJUZXJtaW5hbE5vZGUgPSAhY2hpbGROb2RlQk5vblRlcm1pbmFsTm9kZTtcblxuICAgIGlmIChjaGlsZE5vZGVBVGVybWluYWxOb2RlICYmIGNoaWxkTm9kZUJUZXJtaW5hbE5vZGUpIHtcbiAgICAgIGNvbnN0IHRlcm1pbmFsTm9kZUEgPSBjaGlsZE5vZGVBLCAvLy9cbiAgICAgICAgICAgIHRlcm1pbmFsTm9kZUIgPSBjaGlsZE5vZGVCLCAvLy9cbiAgICAgICAgICAgIHRlcm1pbmFsTm9kZUFNYXRjaGVzVGVybWluYWxOb2RlQiA9IHRlcm1pbmFsTm9kZUEubWF0Y2godGVybWluYWxOb2RlQik7XG5cbiAgICAgIGlmICh0ZXJtaW5hbE5vZGVBTWF0Y2hlc1Rlcm1pbmFsTm9kZUIpIHtcbiAgICAgICAgY2hpbGROb2RlQ29uZ3J1ZW50ID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gY2hpbGROb2RlQ29uZ3J1ZW50O1xufVxuIl0sIm5hbWVzIjpbImFyZUNoaWxkTm9kZXNDb25ncnVlbnQiLCJub25UZXJtaW5hbE5vZGVRdWVyeSIsIm1hdGNoIiwiYXJyYXlVdGlsaXRpZXMiLCJub2RlUXVlcnkiLCJjaGlsZE5vZGVzQSIsImNoaWxkTm9kZXNCIiwiY2hpbGROb2Rlc0NvbmdydWVudCIsImNoaWxkTm9kZUEiLCJjaGlsZE5vZGVCIiwiY2hpbGROb2RlQ29uZ3J1ZW50IiwiaXNDaGlsZE5vZGVDb25ncnVlbnQiLCJjaGlsZE5vZGVBTm9uVGVybWluYWxOb2RlIiwiaXNOb25UZXJtaW5hbE5vZGUiLCJjaGlsZE5vZGVCTm9uVGVybWluYWxOb2RlIiwiY2hpbGROb2RlQVRlcm1pbmFsTm9kZSIsImNoaWxkTm9kZUJUZXJtaW5hbE5vZGUiLCJ0ZXJtaW5hbE5vZGVBIiwidGVybWluYWxOb2RlQiIsInRlcm1pbmFsTm9kZUFNYXRjaGVzVGVybWluYWxOb2RlQiJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O1FBVWdCQTtlQUFBQTs7UUFGSEM7ZUFBQUE7OzsyQkFOa0I7dUJBRUw7QUFFMUIsTUFBTSxFQUFFQyxLQUFLLEVBQUUsR0FBR0MseUJBQWM7QUFFekIsTUFBTUYsdUJBQXVCRyxJQUFBQSxnQkFBUyxFQUFDO0FBRXZDLFNBQVNKLHVCQUF1QkssV0FBVyxFQUFFQyxXQUFXO0lBQzdELE1BQU1DLHNCQUFzQkwsTUFBTUcsYUFBYUMsYUFBYSxDQUFDRSxZQUFZQztRQUN2RSxNQUFNQyxxQkFBcUJDLHFCQUFxQkgsWUFBWUM7UUFFNUQsSUFBSUMsb0JBQW9CO1lBQ3RCLE9BQU87UUFDVDtJQUNGO0lBRUEsT0FBT0g7QUFDVDtBQUVBLFNBQVNJLHFCQUFxQkgsVUFBVSxFQUFFQyxVQUFVO0lBQ2xELElBQUlDLHFCQUFxQjtJQUV6QixNQUFNRSw0QkFBNEJKLFdBQVdLLGlCQUFpQixJQUN4REMsNEJBQTRCTCxXQUFXSSxpQkFBaUI7SUFFOUQsSUFBSUQsNkJBQTZCRSwyQkFBMkI7UUFDMURKLHFCQUFxQjtJQUN2QixPQUFPO1FBQ0wsTUFBTUsseUJBQXlCLENBQUNILDJCQUMxQkkseUJBQXlCLENBQUNGO1FBRWhDLElBQUlDLDBCQUEwQkMsd0JBQXdCO1lBQ3BELE1BQU1DLGdCQUFnQlQsWUFDaEJVLGdCQUFnQlQsWUFDaEJVLG9DQUFvQ0YsY0FBY2YsS0FBSyxDQUFDZ0I7WUFFOUQsSUFBSUMsbUNBQW1DO2dCQUNyQ1QscUJBQXFCO1lBQ3ZCO1FBQ0Y7SUFDRjtJQUVBLE9BQU9BO0FBQ1QifQ==
|
package/package.json
CHANGED
package/src/utilities/pass.js
CHANGED
|
@@ -9,64 +9,39 @@ const { match } = arrayUtilities;
|
|
|
9
9
|
export const nonTerminalNodeQuery = nodeQuery("/*");
|
|
10
10
|
|
|
11
11
|
export function areChildNodesCongruent(childNodesA, childNodesB) {
|
|
12
|
-
|
|
12
|
+
const childNodesCongruent = match(childNodesA, childNodesB, (childNodeA, childNodeB) => {
|
|
13
|
+
const childNodeCongruent = isChildNodeCongruent(childNodeA, childNodeB);
|
|
13
14
|
|
|
14
|
-
|
|
15
|
-
|
|
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) {
|
|
31
|
-
const terminalNodeMap = {};
|
|
32
|
-
|
|
33
|
-
childNodes.forEach((childNode, index) => {
|
|
34
|
-
const childNodeTerminalNode = childNode.isTerminalNode();
|
|
35
|
-
|
|
36
|
-
if (childNodeTerminalNode) {
|
|
37
|
-
const terminalNode = childNode; //
|
|
38
|
-
|
|
39
|
-
terminalNodeMap[index] = terminalNode;
|
|
15
|
+
if (childNodeCongruent) {
|
|
16
|
+
return true;
|
|
40
17
|
}
|
|
41
18
|
});
|
|
42
19
|
|
|
43
|
-
return
|
|
20
|
+
return childNodesCongruent;
|
|
44
21
|
}
|
|
45
22
|
|
|
46
|
-
function
|
|
47
|
-
let
|
|
23
|
+
function isChildNodeCongruent(childNodeA, childNodeB) {
|
|
24
|
+
let childNodeCongruent = false;
|
|
48
25
|
|
|
49
|
-
const
|
|
50
|
-
|
|
51
|
-
terminalNodeMapKeysMatch = match(generalIndexes, specificIndexes, (generalIndex, specificIndex) => {
|
|
52
|
-
if (generalIndex === specificIndex) {
|
|
53
|
-
return true;
|
|
54
|
-
}
|
|
55
|
-
});
|
|
26
|
+
const childNodeANonTerminalNode = childNodeA.isNonTerminalNode(),
|
|
27
|
+
childNodeBNonTerminalNode = childNodeB.isNonTerminalNode();
|
|
56
28
|
|
|
57
|
-
if (
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
29
|
+
if (childNodeANonTerminalNode && childNodeBNonTerminalNode) {
|
|
30
|
+
childNodeCongruent = true;
|
|
31
|
+
} else {
|
|
32
|
+
const childNodeATerminalNode = !childNodeANonTerminalNode,
|
|
33
|
+
childNodeBTerminalNode = !childNodeBNonTerminalNode;
|
|
62
34
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
35
|
+
if (childNodeATerminalNode && childNodeBTerminalNode) {
|
|
36
|
+
const terminalNodeA = childNodeA, ///
|
|
37
|
+
terminalNodeB = childNodeB, ///
|
|
38
|
+
terminalNodeAMatchesTerminalNodeB = terminalNodeA.match(terminalNodeB);
|
|
67
39
|
|
|
68
|
-
|
|
40
|
+
if (terminalNodeAMatchesTerminalNodeB) {
|
|
41
|
+
childNodeCongruent = true;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
69
44
|
}
|
|
70
45
|
|
|
71
|
-
return
|
|
46
|
+
return childNodeCongruent;
|
|
72
47
|
}
|