binary insert and buffer uniqify.
This commit is contained in:
parent
c9c38e860b
commit
1c73374e55
@ -2511,7 +2511,12 @@ utils.binarySearch = function binarySearch(items, key, compare, insert) {
|
||||
|
||||
utils.binaryInsert = function binaryInsert(items, item, compare) {
|
||||
var i = utils.binarySearch(items, item, compare, true);
|
||||
items.splice(i, 0, item);
|
||||
if (i === 0)
|
||||
items.unshift(item);
|
||||
else if (i === items.length)
|
||||
items.push(item);
|
||||
else
|
||||
items.splice(i, 0, item);
|
||||
return i;
|
||||
};
|
||||
|
||||
@ -2531,6 +2536,34 @@ utils.binaryRemove = function binaryRemove(items, item, compare) {
|
||||
return true;
|
||||
};
|
||||
|
||||
/**
|
||||
* Unique-ify and sort an array of buffers.
|
||||
* @param {Buffer[]} items
|
||||
* @returns {Buffer[]}
|
||||
*/
|
||||
|
||||
utils.uniqBuffer = function uniqBuffer(items) {
|
||||
var out = [];
|
||||
var i, j, item;
|
||||
|
||||
for (i = 0; i < items.length; i++) {
|
||||
item = items[i];
|
||||
j = utils.binarySearch(out, item, utils.cmp, true);
|
||||
|
||||
if (j < out.length && utils.cmp(out[j], item) === 0)
|
||||
continue;
|
||||
|
||||
if (j === 0)
|
||||
out.unshift(item);
|
||||
else if (j === out.length)
|
||||
out.push(item);
|
||||
else
|
||||
out.splice(j, 0, item);
|
||||
}
|
||||
|
||||
return out;
|
||||
};
|
||||
|
||||
/**
|
||||
* Normalize a path.
|
||||
* @param {String} path
|
||||
|
||||
Loading…
Reference in New Issue
Block a user