from __future__ import unicode_literals from ..conversions import * from ..func_utils import * from ..base import SpaceTuple REG_EXP_FLAGS = ('g', 'i', 'm') def RegExp(this, args): pattern = get_arg(args, 0) flags = get_arg(args, 1) if GetClass(pattern) == 'RegExp': if not is_undefined(flags): raise MakeError( 'TypeError', 'Cannot supply flags when constructing one RegExp from another' ) # return unchanged return pattern #pattern is not a regexp if is_undefined(pattern): pattern = u'' else: pattern = to_string(pattern) flags = to_string(flags) if not is_undefined(flags) else u'' for flag in flags: if flag not in REG_EXP_FLAGS: raise MakeError( 'SyntaxError', 'Invalid flags supplied to RegExp constructor "%s"' % flag) if len(set(flags)) != len(flags): raise MakeError( 'SyntaxError', 'Invalid flags supplied to RegExp constructor "%s"' % flags) return args.space.NewRegExp(pattern, flags) def RegExpCreate(args, space): _args = SpaceTuple(args) _args.space = space return RegExp(undefined, _args)