path-sort
Version:
Sort a list of file/directory paths
32 lines (27 loc) • 738 B
JavaScript
module.exports = pathsort
module.exports.standalone = standalone
function pathsort(paths, sep) {
sep = sep || '/'
return paths.map(function(el) {
return el.split(sep)
}).sort(sorter).map(function(el) {
return el.join(sep)
})
}
function sorter(a, b) {
var l = Math.max(a.length, b.length)
for (var i = 0; i < l; i += 1) {
if (!(i in a)) return -1
if (!(i in b)) return +1
if (a[i].toUpperCase() > b[i].toUpperCase()) return +1
if (a[i].toUpperCase() < b[i].toUpperCase()) return -1
if (a.length < b.length) return -1
if (a.length > b.length) return +1
}
}
function standalone(sep) {
sep = sep || '/'
return function pathsort(a, b) {
return sorter(a.split(sep), b.split(sep))
}
}