UNPKG

reductio

Version:

Reductio: Crossfilter groupings

36 lines (32 loc) 795 B
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)); }; }