reductio
Version:
Reductio: Crossfilter groupings
36 lines (32 loc) • 795 B
JavaScript
var pluck_n = function (n) {
if (typeof n === 'function') {
return n;
}
if (~n.indexOf('.')) {
var split = n.split('.');
return function (d) {
return split.reduce(function (p, v) {
return p[v];
}, d);
};
}
return function (d) {
return d[n];
};
};
function ascending(a, b) {
return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;
}
var comparer = function (accessor, ordering) {
return function (a, b) {
return ordering(accessor(a), accessor(b));
};
};
export default function (prior) {
return function (value, order) {
if (arguments.length === 1) {
order = ascending;
}
return prior().sort(comparer(pluck_n(value), order));
};
}