Sundry set API renamings and additions
This commit is contained in:
parent
037abe45a5
commit
83e82658c5
31
route.js
31
route.js
|
@ -201,10 +201,10 @@ function Routing(exports) {
|
|||
///////////////////////////////////////////////////////////////////////////
|
||||
// Enough of sets to get by with
|
||||
|
||||
function newSet() {
|
||||
function arrayToSet(xs) {
|
||||
var s = {};
|
||||
for (var i = 0; i < arguments.length; i++) {
|
||||
s[arguments[i]] = arguments[i];
|
||||
for (var i = 0; i < xs.length; i++) {
|
||||
s[JSON.stringify(xs[i])] = xs[i];
|
||||
}
|
||||
return s;
|
||||
}
|
||||
|
@ -222,7 +222,7 @@ function Routing(exports) {
|
|||
return s;
|
||||
}
|
||||
|
||||
function setEmpty(s) {
|
||||
function is_emptySet(s) {
|
||||
for (var k in s) {
|
||||
if (s.hasOwnProperty(k))
|
||||
return false;
|
||||
|
@ -240,6 +240,16 @@ function Routing(exports) {
|
|||
return s;
|
||||
}
|
||||
|
||||
function setIntersect(s1, s2) {
|
||||
var s = {};
|
||||
for (var key in s1) {
|
||||
if (s1.hasOwnProperty(key) && s2.hasOwnProperty(key)) {
|
||||
s[key] = s1[key];
|
||||
}
|
||||
}
|
||||
return s;
|
||||
}
|
||||
|
||||
function setUnionInplace(acc, s) {
|
||||
for (var key in s) {
|
||||
if (s.hasOwnProperty(key)) {
|
||||
|
@ -276,7 +286,7 @@ function Routing(exports) {
|
|||
|
||||
var erasePathSuccesses = function (v1, v2) {
|
||||
var r = setSubtract(v1, v2);
|
||||
if (setEmpty(r)) return null;
|
||||
if (is_emptySet(r)) return null;
|
||||
return r;
|
||||
};
|
||||
|
||||
|
@ -597,7 +607,7 @@ function Routing(exports) {
|
|||
|
||||
// TODO: better name for this
|
||||
function matchMatcher(o1, o2, seed) {
|
||||
var acc = seed || newSet(); // will be modified in place
|
||||
var acc = seed || {}; // will be modified in place
|
||||
walk(o1, o2);
|
||||
return acc;
|
||||
|
||||
|
@ -1217,7 +1227,7 @@ function Routing(exports) {
|
|||
};
|
||||
|
||||
Gestalt.prototype.label = function (pid) {
|
||||
var pids = newSet(pid);
|
||||
var pids = arrayToSet([pid]);
|
||||
return this.transform(function (m) { return relabel(m, function (v) { return pids; }); });
|
||||
};
|
||||
|
||||
|
@ -1252,7 +1262,12 @@ function Routing(exports) {
|
|||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
exports.__ = __;
|
||||
exports.newSet = newSet;
|
||||
exports.arrayToSet = arrayToSet;
|
||||
exports.setUnion = setUnion;
|
||||
exports.setSubtract = setSubtract;
|
||||
exports.setIntersect = setIntersect;
|
||||
exports.setEqual = setEqual;
|
||||
exports.is_emptySet = is_emptySet;
|
||||
exports.$Capture = $Capture;
|
||||
exports._$ = _$;
|
||||
exports.is_emptyMatcher = is_emptyMatcher;
|
||||
|
|
32
tr.js
32
tr.js
|
@ -18,8 +18,8 @@ function dumpG(g) {
|
|||
return g;
|
||||
}
|
||||
|
||||
mAny = r.compilePattern(r.newSet('mAny'), r.__);
|
||||
mAAny = r.compilePattern(r.newSet('mAAny'), ['A', r.__]);
|
||||
mAny = r.compilePattern(r.arrayToSet(['mAny']), r.__);
|
||||
mAAny = r.compilePattern(r.arrayToSet(['mAAny']), ['A', r.__]);
|
||||
dumpM(mAny);
|
||||
dumpM(mAAny);
|
||||
|
||||
|
@ -37,30 +37,30 @@ dump(r.matchValue(mAAny, ['A', [['hi']]]));
|
|||
|
||||
console.log("unions");
|
||||
|
||||
dumpM(r.union(r.compilePattern(r.newSet('A'), [r.__, 'A']),
|
||||
r.compilePattern(r.newSet('B'), [r.__, 'B'])));
|
||||
dumpM(r.union(r.compilePattern(r.arrayToSet(['A']), [r.__, 'A']),
|
||||
r.compilePattern(r.arrayToSet(['B']), [r.__, 'B'])));
|
||||
|
||||
dumpM(r.union(r.compilePattern(r.newSet('A'), [r.__, 'A']),
|
||||
r.compilePattern(r.newSet('W'), r.__)));
|
||||
dumpM(r.union(r.compilePattern(r.arrayToSet(['A']), [r.__, 'A']),
|
||||
r.compilePattern(r.arrayToSet(['W']), r.__)));
|
||||
|
||||
console.log("projections");
|
||||
|
||||
dumpM(r.project(r.union(r.compilePattern(r.newSet('A'), r.__),
|
||||
r.compilePattern(r.newSet('B'), ['b'])),
|
||||
dumpM(r.project(r.union(r.compilePattern(r.arrayToSet(['A']), r.__),
|
||||
r.compilePattern(r.arrayToSet(['B']), ['b'])),
|
||||
r.compileProjection(r._$([[r.__]]))));
|
||||
|
||||
dumpM(r.project(r.union(r.compilePattern(r.newSet('A'), [1, 2]),
|
||||
r.compilePattern(r.newSet('C'), [1, 3]),
|
||||
r.compilePattern(r.newSet('B'), [3, 4])),
|
||||
dumpM(r.project(r.union(r.compilePattern(r.arrayToSet(['A']), [1, 2]),
|
||||
r.compilePattern(r.arrayToSet(['C']), [1, 3]),
|
||||
r.compilePattern(r.arrayToSet(['B']), [3, 4])),
|
||||
r.compileProjection([r._$(), r._$()])));
|
||||
|
||||
dump(r.matcherKeys(r.project(r.union(r.compilePattern(r.newSet('A'), [1, 2]),
|
||||
r.compilePattern(r.newSet('C'), [1, 3]),
|
||||
r.compilePattern(r.newSet('B'), [3, 4])),
|
||||
dump(r.matcherKeys(r.project(r.union(r.compilePattern(r.arrayToSet(['A']), [1, 2]),
|
||||
r.compilePattern(r.arrayToSet(['C']), [1, 3]),
|
||||
r.compilePattern(r.arrayToSet(['B']), [3, 4])),
|
||||
r.compileProjection([r._$(), r._$()]))));
|
||||
|
||||
var R1 = r.compilePattern(r.newSet('A'), [r.__, "B"]);
|
||||
var R2 = r.compilePattern(r.newSet('B'), ["A", r.__]);
|
||||
var R1 = r.compilePattern(r.arrayToSet(['A']), [r.__, "B"]);
|
||||
var R2 = r.compilePattern(r.arrayToSet(['B']), ["A", r.__]);
|
||||
var R12 = r.union(R1, R2);
|
||||
dumpM(R1);
|
||||
dumpM(R2);
|
||||
|
|
Loading…
Reference in New Issue