first
This commit is contained in:
46
node_modules/core-js/internals/get-substitution.js
generated
vendored
Normal file
46
node_modules/core-js/internals/get-substitution.js
generated
vendored
Normal file
@ -0,0 +1,46 @@
|
||||
'use strict';
|
||||
var uncurryThis = require('../internals/function-uncurry-this');
|
||||
var toObject = require('../internals/to-object');
|
||||
|
||||
var floor = Math.floor;
|
||||
var charAt = uncurryThis(''.charAt);
|
||||
var replace = uncurryThis(''.replace);
|
||||
var stringSlice = uncurryThis(''.slice);
|
||||
// eslint-disable-next-line redos/no-vulnerable -- safe
|
||||
var SUBSTITUTION_SYMBOLS = /\$([$&'`]|\d{1,2}|<[^>]*>)/g;
|
||||
var SUBSTITUTION_SYMBOLS_NO_NAMED = /\$([$&'`]|\d{1,2})/g;
|
||||
|
||||
// `GetSubstitution` abstract operation
|
||||
// https://tc39.es/ecma262/#sec-getsubstitution
|
||||
module.exports = function (matched, str, position, captures, namedCaptures, replacement) {
|
||||
var tailPos = position + matched.length;
|
||||
var m = captures.length;
|
||||
var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;
|
||||
if (namedCaptures !== undefined) {
|
||||
namedCaptures = toObject(namedCaptures);
|
||||
symbols = SUBSTITUTION_SYMBOLS;
|
||||
}
|
||||
return replace(replacement, symbols, function (match, ch) {
|
||||
var capture;
|
||||
switch (charAt(ch, 0)) {
|
||||
case '$': return '$';
|
||||
case '&': return matched;
|
||||
case '`': return stringSlice(str, 0, position);
|
||||
case "'": return stringSlice(str, tailPos);
|
||||
case '<':
|
||||
capture = namedCaptures[stringSlice(ch, 1, -1)];
|
||||
break;
|
||||
default: // \d\d?
|
||||
var n = +ch;
|
||||
if (n === 0) return match;
|
||||
if (n > m) {
|
||||
var f = floor(n / 10);
|
||||
if (f === 0) return match;
|
||||
if (f <= m) return captures[f - 1] === undefined ? charAt(ch, 1) : captures[f - 1] + charAt(ch, 1);
|
||||
return match;
|
||||
}
|
||||
capture = captures[n - 1];
|
||||
}
|
||||
return capture === undefined ? '' : capture;
|
||||
});
|
||||
};
|
Reference in New Issue
Block a user