It turns out that order-of-definition is a thing for browser JS, even if not for node.js
This commit is contained in:
parent
87c5aac69f
commit
1e3a8f7db0
99
route.js
99
route.js
|
@ -323,10 +323,6 @@ function Routing(exports) {
|
||||||
}
|
}
|
||||||
return target.emptyGuard();
|
return target.emptyGuard();
|
||||||
} else {
|
} else {
|
||||||
var target = rwild(w).copy();
|
|
||||||
for (var key in r1.entries) { examineKey(r1, key, r2); }
|
|
||||||
for (var key in r2.entries) { examineKey(r2, key, r1); }
|
|
||||||
return target;
|
|
||||||
function examineKey(rA, key, rB) {
|
function examineKey(rA, key, rB) {
|
||||||
if ((key !== __) && !target.has(key)) {
|
if ((key !== __) && !target.has(key)) {
|
||||||
var k = merge(rA.get(key), rB.get(key));
|
var k = merge(rA.get(key), rB.get(key));
|
||||||
|
@ -343,6 +339,10 @@ function Routing(exports) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
var target = rwild(w).copy();
|
||||||
|
for (var key in r1.entries) { examineKey(r1, key, r2); }
|
||||||
|
for (var key in r2.entries) { examineKey(r2, key, r1); }
|
||||||
|
return target;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -388,22 +388,6 @@ function Routing(exports) {
|
||||||
var w = walk(w1, w2);
|
var w = walk(w1, w2);
|
||||||
|
|
||||||
var target = new $Dict();
|
var target = new $Dict();
|
||||||
if (is_emptyMatcher(w1)) {
|
|
||||||
if (is_emptyMatcher(w2)) {
|
|
||||||
for (var key in r1.smallerOf(r2).entries) examineKey(key);
|
|
||||||
} else {
|
|
||||||
for (var key in r1.entries) examineKey(key);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (is_emptyMatcher(w2)) {
|
|
||||||
for (var key in r2.entries) examineKey(key);
|
|
||||||
} else {
|
|
||||||
rupdateInplace(target, __, w);
|
|
||||||
for (var key in r1.entries) examineKey(key);
|
|
||||||
for (var key in r2.entries) examineKey(key);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return target.emptyGuard();
|
|
||||||
|
|
||||||
function examineKey(key) {
|
function examineKey(key) {
|
||||||
if ((key !== __) && !target.has(key)) {
|
if ((key !== __) && !target.has(key)) {
|
||||||
|
@ -424,6 +408,23 @@ function Routing(exports) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (is_emptyMatcher(w1)) {
|
||||||
|
if (is_emptyMatcher(w2)) {
|
||||||
|
for (var key in r1.smallerOf(r2).entries) examineKey(key);
|
||||||
|
} else {
|
||||||
|
for (var key in r1.entries) examineKey(key);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (is_emptyMatcher(w2)) {
|
||||||
|
for (var key in r2.entries) examineKey(key);
|
||||||
|
} else {
|
||||||
|
rupdateInplace(target, __, w);
|
||||||
|
for (var key in r1.entries) examineKey(key);
|
||||||
|
for (var key in r2.entries) examineKey(key);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return target.emptyGuard();
|
||||||
}
|
}
|
||||||
|
|
||||||
function walkWild(walker, w, key, k) {
|
function walkWild(walker, w, key, k) {
|
||||||
|
@ -478,17 +479,6 @@ function Routing(exports) {
|
||||||
var w = walk(w1, w2);
|
var w = walk(w1, w2);
|
||||||
var target;
|
var target;
|
||||||
|
|
||||||
if (is_emptyMatcher(w2)) {
|
|
||||||
target = r1.copy();
|
|
||||||
for (var key in r2.entries) examineKey(key);
|
|
||||||
} else {
|
|
||||||
target = new $Dict();
|
|
||||||
rupdateInplace(target, __, w);
|
|
||||||
for (var key in r1.entries) examineKey(key);
|
|
||||||
for (var key in r2.entries) examineKey(key);
|
|
||||||
}
|
|
||||||
return target.emptyGuard();
|
|
||||||
|
|
||||||
function examineKey(key) {
|
function examineKey(key) {
|
||||||
if (key !== __) {
|
if (key !== __) {
|
||||||
var k1 = r1.get(key);
|
var k1 = r1.get(key);
|
||||||
|
@ -515,6 +505,17 @@ function Routing(exports) {
|
||||||
rupdateInplace(target, key, (requal(updatedK, w) ? emptyMatcher : updatedK));
|
rupdateInplace(target, key, (requal(updatedK, w) ? emptyMatcher : updatedK));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (is_emptyMatcher(w2)) {
|
||||||
|
target = r1.copy();
|
||||||
|
for (var key in r2.entries) examineKey(key);
|
||||||
|
} else {
|
||||||
|
target = new $Dict();
|
||||||
|
rupdateInplace(target, __, w);
|
||||||
|
for (var key in r1.entries) examineKey(key);
|
||||||
|
for (var key in r2.entries) examineKey(key);
|
||||||
|
}
|
||||||
|
return target.emptyGuard();
|
||||||
}
|
}
|
||||||
|
|
||||||
function walkWild(key, k, w) {
|
function walkWild(key, k, w) {
|
||||||
|
@ -613,22 +614,6 @@ function Routing(exports) {
|
||||||
var w2 = r2.get(__);
|
var w2 = r2.get(__);
|
||||||
walk(w1, w2);
|
walk(w1, w2);
|
||||||
|
|
||||||
// Optimize similarly to intersect().
|
|
||||||
if (is_emptyMatcher(w1)) {
|
|
||||||
if (is_emptyMatcher(w2)) {
|
|
||||||
for (var key in r1.smallerOf(r2).entries) examineKey(key);
|
|
||||||
} else {
|
|
||||||
for (var key in r1.entries) examineKey(key);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (is_emptyMatcher(w2)) {
|
|
||||||
for (var key in r2.entries) examineKey(key);
|
|
||||||
} else {
|
|
||||||
for (var key in r1.entries) examineKey(key);
|
|
||||||
for (var key in r2.entries) examineKey(key);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function examineKey(key) {
|
function examineKey(key) {
|
||||||
if (key !== __) {
|
if (key !== __) {
|
||||||
var k1 = r1.get(key);
|
var k1 = r1.get(key);
|
||||||
|
@ -648,6 +633,22 @@ function Routing(exports) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Optimize similarly to intersect().
|
||||||
|
if (is_emptyMatcher(w1)) {
|
||||||
|
if (is_emptyMatcher(w2)) {
|
||||||
|
for (var key in r1.smallerOf(r2).entries) examineKey(key);
|
||||||
|
} else {
|
||||||
|
for (var key in r1.entries) examineKey(key);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (is_emptyMatcher(w2)) {
|
||||||
|
for (var key in r2.entries) examineKey(key);
|
||||||
|
} else {
|
||||||
|
for (var key in r1.entries) examineKey(key);
|
||||||
|
for (var key in r2.entries) examineKey(key);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function walkWild(walker, w, key, k) {
|
function walkWild(walker, w, key, k) {
|
||||||
|
@ -899,7 +900,6 @@ function Routing(exports) {
|
||||||
var mk = m.get(key);
|
var mk = m.get(key);
|
||||||
var piece;
|
var piece;
|
||||||
if (is_keyOpen(key)) {
|
if (is_keyOpen(key)) {
|
||||||
piece = walkSeq(mk, seqK);
|
|
||||||
function seqK(vss, vsk) {
|
function seqK(vss, vsk) {
|
||||||
var acc = [];
|
var acc = [];
|
||||||
for (var i = 0; i < vss.length; i++) {
|
for (var i = 0; i < vss.length; i++) {
|
||||||
|
@ -908,6 +908,7 @@ function Routing(exports) {
|
||||||
}
|
}
|
||||||
return acc;
|
return acc;
|
||||||
}
|
}
|
||||||
|
piece = walkSeq(mk, seqK);
|
||||||
} else if (is_keyClose(key)) {
|
} else if (is_keyClose(key)) {
|
||||||
die("matcherKeys: internal error: unexpected key-close");
|
die("matcherKeys: internal error: unexpected key-close");
|
||||||
} else {
|
} else {
|
||||||
|
@ -930,7 +931,6 @@ function Routing(exports) {
|
||||||
if (is_keyClose(key)) {
|
if (is_keyClose(key)) {
|
||||||
piece = k([[]], mk);
|
piece = k([[]], mk);
|
||||||
} else {
|
} else {
|
||||||
piece = walk(rseq(key, mk), outerK);
|
|
||||||
function outerK(v, vk) {
|
function outerK(v, vk) {
|
||||||
return walkSeq(vk, innerK);
|
return walkSeq(vk, innerK);
|
||||||
function innerK(vss, vsk) {
|
function innerK(vss, vsk) {
|
||||||
|
@ -943,6 +943,7 @@ function Routing(exports) {
|
||||||
return k(acc, vsk);
|
return k(acc, vsk);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
piece = walk(rseq(key, mk), outerK);
|
||||||
}
|
}
|
||||||
if (piece == null) return null;
|
if (piece == null) return null;
|
||||||
acc = acc.concat(piece);
|
acc = acc.concat(piece);
|
||||||
|
|
Loading…
Reference in New Issue