was.js
/trunk/lib/lambda/aggregators.js/aggregators.js |
@@ -3,9 +3,7 @@ |
/*************************************************************************/ |
/* fuss/lambda_calculus/functional_programming/aggregators @ grimore.org */ |
/*************************************************************************/ |
// Vanilla ES6 JavaScript |
if (!Array.prototype.switch) { |
Array.prototype.switch = function(d, ...c) { |
function wasSwitch(q, d, ...c) { |
if(c.length % 2 !== 0) { |
throw "Pairs of predicates expected for cases"; |
} |
@@ -26,53 +24,17 @@ |
d(s); |
} |
}); |
}; |
} |
|
// Vanilla ES6 JavaScript |
if (!Array.prototype.switch) { |
Array.prototype.switch = wasSwitch; |
} |
// jQuery |
$.extend({ |
switch: function(q, d, ...c) { |
if(c.length % 2 !== 0) { |
throw "Pairs of predicates expected for cases"; |
} |
|
(Array.isArray(q) ? q : [ q ]).forEach((s) => { |
var m = false; |
for(var i = 0; i < c.length; i += 2) { |
if(!c[i](s)) { |
continue; |
} |
if(!c[i + 1](s)) { |
continue; |
} |
m = true; |
} |
|
if(!m) { |
d(s); |
} |
switch: wasSwitch |
}); |
} |
}); |
// Node.JS |
module.exports.switch = function(q, d, ...c) { |
if(c.length % 2 !== 0) { |
throw "Pairs of predicates expected for cases"; |
} |
|
(Array.isArray(q) ? q : [ q ]).forEach((s) => { |
var m = false; |
for(var i = 0; i < c.length; i += 2) { |
if(!c[i](s)) { |
continue; |
} |
if(!c[i + 1](s)) { |
continue; |
} |
m = true; |
} |
|
if(!m) { |
d(s); |
} |
}); |
module.exports = { |
switch: wasSwitch |
}; |