File size: 1,116 Bytes
bc20498 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
var through = require('through2');
function defaultComparator(a, b) {
return a.path.localeCompare(b.path);
}
module.exports = function gulpSort(params) {
var asc = true;
var comparator;
var files = [];
var customSortFn;
if (typeof params === 'function') {
// params is the sort comparator
comparator = params;
params = {};
} else {
params = params || {};
asc = typeof params.asc !== 'undefined' ? params.asc : asc;
comparator = params.comparator || defaultComparator;
customSortFn = params.customSortFn;
}
return through.obj(function (file, enc, cb) {
files.push(file);
cb();
}, function (cb) {
if (customSortFn) {
// expect customSortFn to return the files array
files = customSortFn(files, comparator);
} else {
// sort in-place
files.sort(comparator);
}
if (!asc) {
files.reverse();
}
files.forEach(function (file) {
this.push(file);
}, this);
cb();
});
};
|