reductio
Version:
Reductio: Crossfilter groupings
30 lines (28 loc) • 801 B
JavaScript
var filter = {
// The big idea here is that you give us a filter function to run on values,
// a 'prior' reducer to run (just like the rest of the standard reducers),
// and a reference to the last reducer (called 'skip' below) defined before
// the most recent chain of reducers. This supports individual filters for
// each .value('...') chain that you add to your reducer.
add: function (filter, prior, skip) {
return function (p, v, nf) {
if (filter(v, nf)) {
if (prior) prior(p, v, nf);
} else {
if (skip) skip(p, v, nf);
}
return p;
};
},
remove: function (filter, prior, skip) {
return function (p, v, nf) {
if (filter(v, nf)) {
if (prior) prior(p, v, nf);
} else {
if (skip) skip(p, v, nf);
}
return p;
};
}
};
export default filter;