You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
"use strict";
Object.defineProperty(exports, "__esModule", { value: true }); exports.generateRegexpuOptions = generateRegexpuOptions;
var _features = require("./features");
function generateRegexpuOptions(node, features) { let useUnicodeFlag = false, dotAllFlag = false, unicodePropertyEscape = false, namedGroup = false; const { flags, pattern } = node; const flagsIncludesU = flags.includes("u");
if (flagsIncludesU) { if (!(0, _features.hasFeature)(features, _features.FEATURES.unicodeFlag)) { useUnicodeFlag = true; }
if ((0, _features.hasFeature)(features, _features.FEATURES.unicodePropertyEscape) && /\\[pP]{/.test(pattern)) { unicodePropertyEscape = true; } }
if ((0, _features.hasFeature)(features, _features.FEATURES.dotAllFlag) && flags.indexOf("s") >= 0) { dotAllFlag = true; }
if ((0, _features.hasFeature)(features, _features.FEATURES.namedCaptureGroups) && /\(\?<(?![=!])/.test(pattern)) { namedGroup = true; }
if (!namedGroup && !unicodePropertyEscape && !dotAllFlag && (!flagsIncludesU || useUnicodeFlag)) { return null; }
if (flagsIncludesU && flags.indexOf("s") >= 0) { dotAllFlag = true; }
return { useUnicodeFlag, onNamedGroup: () => {}, namedGroup, unicodePropertyEscape, dotAllFlag, lookbehind: true }; }
|