-
Notifications
You must be signed in to change notification settings - Fork 2
/
index.js
43 lines (39 loc) · 1.09 KB
/
index.js
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
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();
});
};