lib: move duplicate spliceOne into internal/util
lib/url.js and lib/events.js are using the same spliceOne function. This change is to move it into the internal/util for avoiding duplicate code. PR-URL: https://github.com/nodejs/node/pull/16221 Reviewed-By: Timothy Gu <timothygu99@gmail.com> Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de> Reviewed-By: Vse Mozhet Byt <vsemozhetbyt@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Anatoli Papirovski <apapirovski@mac.com> Reviewed-By: Refael Ackermann <refack@gmail.com>
This commit is contained in:
parent
686e092202
commit
7a71cd7d0c
@ -22,6 +22,7 @@
|
||||
'use strict';
|
||||
|
||||
var domain;
|
||||
var spliceOne;
|
||||
|
||||
function EventEmitter() {
|
||||
EventEmitter.init.call(this);
|
||||
@ -414,8 +415,11 @@ EventEmitter.prototype.removeListener =
|
||||
|
||||
if (position === 0)
|
||||
list.shift();
|
||||
else
|
||||
else {
|
||||
if (spliceOne === undefined)
|
||||
spliceOne = require('internal/util').spliceOne;
|
||||
spliceOne(list, position);
|
||||
}
|
||||
|
||||
if (list.length === 1)
|
||||
events[type] = list[0];
|
||||
@ -527,13 +531,6 @@ EventEmitter.prototype.eventNames = function eventNames() {
|
||||
return this._eventsCount > 0 ? Reflect.ownKeys(this._events) : [];
|
||||
};
|
||||
|
||||
// About 1.5x faster than the two-arg version of Array#splice().
|
||||
function spliceOne(list, index) {
|
||||
for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1)
|
||||
list[i] = list[k];
|
||||
list.pop();
|
||||
}
|
||||
|
||||
function arrayClone(arr, n) {
|
||||
var copy = new Array(n);
|
||||
for (var i = 0; i < n; ++i)
|
||||
|
@ -271,6 +271,13 @@ function join(output, separator) {
|
||||
return str;
|
||||
}
|
||||
|
||||
// About 1.5x faster than the two-arg version of Array#splice().
|
||||
function spliceOne(list, index) {
|
||||
for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1)
|
||||
list[i] = list[k];
|
||||
list.pop();
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
assertCrypto,
|
||||
cachedResult,
|
||||
@ -281,10 +288,11 @@ module.exports = {
|
||||
filterDuplicateStrings,
|
||||
getConstructorOf,
|
||||
isError,
|
||||
join,
|
||||
normalizeEncoding,
|
||||
objectToString,
|
||||
promisify,
|
||||
join,
|
||||
spliceOne,
|
||||
|
||||
// Symbol used to customize promisify conversion
|
||||
customPromisifyArgs: kCustomPromisifyArgsSymbol,
|
||||
|
@ -28,6 +28,8 @@ const { hexTable } = require('internal/querystring');
|
||||
|
||||
const errors = require('internal/errors');
|
||||
|
||||
const { spliceOne } = require('internal/util');
|
||||
|
||||
// WHATWG URL implementation provided by internal/url
|
||||
const {
|
||||
URL,
|
||||
@ -950,13 +952,6 @@ Url.prototype.parseHost = function parseHost() {
|
||||
if (host) this.hostname = host;
|
||||
};
|
||||
|
||||
// About 1.5x faster than the two-arg version of Array#splice().
|
||||
function spliceOne(list, index) {
|
||||
for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1)
|
||||
list[i] = list[k];
|
||||
list.pop();
|
||||
}
|
||||
|
||||
// These characters do not need escaping:
|
||||
// ! - . _ ~
|
||||
// ' ( ) * :
|
||||
|
Loading…
x
Reference in New Issue
Block a user