blob: 9618b0d8da2d447d0e2b1b7ebe24b73c493fe95d [file] [log] [blame]
/* eslint-disable node/no-unsupported-features/es-syntax */
/**
* @param {RegExp} regex
* @param {string} newFlags
* @param {Integer} [newLastIndex=regex.lastIndex]
* @returns {RegExp}
*/
export default function mixinRegex (
regex, newFlags, newLastIndex = regex.lastIndex
) {
newFlags = newFlags || '';
regex = new RegExp(
regex.source,
(newFlags.includes('g') ? 'g' : regex.global ? 'g' : '') +
(newFlags.includes('i') ? 'i' : regex.ignoreCase ? 'i' : '') +
(newFlags.includes('m') ? 'm' : regex.multiline ? 'm' : '') +
(newFlags.includes('u') ? 'u' : regex.unicode ? 'u' : '') +
(newFlags.includes('y') ? 'y' : regex.sticky ? 'y' : '') +
(newFlags.includes('s') ? 's' : regex.dotAll ? 's' : '')
);
regex.lastIndex = newLastIndex;
return regex;
}