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) {
|
utils.binaryInsert = function binaryInsert(items, item, compare) {
|
||||||
var i = utils.binarySearch(items, item, compare, true);
|
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;
|
return i;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -2531,6 +2536,34 @@ utils.binaryRemove = function binaryRemove(items, item, compare) {
|
|||||||
return true;
|
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.
|
* Normalize a path.
|
||||||
* @param {String} path
|
* @param {String} path
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user