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.
		
		
		
		
		
			
		
			
				
					
					
						
							55 lines
						
					
					
						
							1.3 KiB
						
					
					
				
			
		
		
	
	
							55 lines
						
					
					
						
							1.3 KiB
						
					
					
				"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 | 
						|
  }; | 
						|
} |