Best JavaScript code snippet using playwright-internal
sre_parse.py
Source:sre_parse.py
...271 self.index = index272 self.__next()273 def error(self, msg, offset=0):274 return error(msg, self.string, self.tell() - offset)275def _class_escape(source, escape):276 # handle escape code inside character class277 code = ESCAPES.get(escape)278 if code:279 return code280 code = CATEGORIES.get(escape)281 if code and code[0] is IN:282 return code283 try:284 c = escape[1:2]285 if c == "x":286 # hexadecimal escape (exactly two digits)287 escape += source.getwhile(2, HEXDIGITS)288 if len(escape) != 4:289 raise source.error("incomplete escape %s" % escape, len(escape))290 return LITERAL, int(escape[2:], 16)291 elif c == "u" and source.istext:292 # unicode escape (exactly four digits)293 escape += source.getwhile(4, HEXDIGITS)294 if len(escape) != 6:295 raise source.error("incomplete escape %s" % escape, len(escape))296 return LITERAL, int(escape[2:], 16)297 elif c == "U" and source.istext:298 # unicode escape (exactly eight digits)299 escape += source.getwhile(8, HEXDIGITS)300 if len(escape) != 10:301 raise source.error("incomplete escape %s" % escape, len(escape))302 c = int(escape[2:], 16)303 chr(c) # raise ValueError for invalid code304 return LITERAL, c305 elif c in OCTDIGITS:306 # octal escape (up to three digits)307 escape += source.getwhile(2, OCTDIGITS)308 c = int(escape[1:], 8)309 if c > 0o377:310 raise source.error('octal escape value %s outside of '311 'range 0-0o377' % escape, len(escape))312 return LITERAL, c313 elif c in DIGITS:314 raise ValueError315 if len(escape) == 2:316 if c in ASCIILETTERS:317 raise source.error('bad escape %s' % escape, len(escape))318 return LITERAL, ord(escape[1])319 except ValueError:320 pass321 raise source.error("bad escape %s" % escape, len(escape))322def _escape(source, escape, state):323 # handle escape code in expression324 code = CATEGORIES.get(escape)325 if code:326 return code327 code = ESCAPES.get(escape)328 if code:329 return code330 try:331 c = escape[1:2]332 if c == "x":333 # hexadecimal escape334 escape += source.getwhile(2, HEXDIGITS)335 if len(escape) != 4:336 raise source.error("incomplete escape %s" % escape, len(escape))337 return LITERAL, int(escape[2:], 16)338 elif c == "u" and source.istext:339 # unicode escape (exactly four digits)340 escape += source.getwhile(4, HEXDIGITS)341 if len(escape) != 6:342 raise source.error("incomplete escape %s" % escape, len(escape))343 return LITERAL, int(escape[2:], 16)344 elif c == "U" and source.istext:345 # unicode escape (exactly eight digits)346 escape += source.getwhile(8, HEXDIGITS)347 if len(escape) != 10:348 raise source.error("incomplete escape %s" % escape, len(escape))349 c = int(escape[2:], 16)350 chr(c) # raise ValueError for invalid code351 return LITERAL, c352 elif c == "0":353 # octal escape354 escape += source.getwhile(2, OCTDIGITS)355 return LITERAL, int(escape[1:], 8)356 elif c in DIGITS:357 # octal escape *or* decimal group reference (sigh)358 if source.next in DIGITS:359 escape += source.get()360 if (escape[1] in OCTDIGITS and escape[2] in OCTDIGITS and361 source.next in OCTDIGITS):362 # got three octal digits; this is an octal escape363 escape += source.get()364 c = int(escape[1:], 8)365 if c > 0o377:366 raise source.error('octal escape value %s outside of '367 'range 0-0o377' % escape,368 len(escape))369 return LITERAL, c370 # not an octal escape, so this is a group reference371 group = int(escape[1:])372 if group < state.groups:373 if not state.checkgroup(group):374 raise source.error("cannot refer to an open group",375 len(escape))376 state.checklookbehindgroup(group, source)377 return GROUPREF, group378 raise source.error("invalid group reference %d" % group, len(escape) - 1)379 if len(escape) == 2:380 if c in ASCIILETTERS:381 raise source.error("bad escape %s" % escape, len(escape))382 return LITERAL, ord(escape[1])383 except ValueError:384 pass385 raise source.error("bad escape %s" % escape, len(escape))386def _parse_sub(source, state, verbose, nested):387 # parse an alternation: a|b|c388 items = []389 itemsappend = items.append390 sourcematch = source.match391 start = source.tell()392 while True:393 itemsappend(_parse(source, state, verbose, nested + 1,394 not nested and not items))395 if not sourcematch("|"):396 break397 if len(items) == 1:398 return items[0]399 subpattern = SubPattern(state)400 subpatternappend = subpattern.append401 # check if all items share a common prefix402 while True:403 prefix = None404 for item in items:405 if not item:406 break407 if prefix is None:408 prefix = item[0]409 elif item[0] != prefix:410 break411 else:412 # all subitems start with a common "prefix".413 # move it out of the branch414 for item in items:415 del item[0]416 subpatternappend(prefix)417 continue # check next one418 break419 # check if the branch can be replaced by a character set420 for item in items:421 if len(item) != 1 or item[0][0] is not LITERAL:422 break423 else:424 # we can store this as a character set instead of a425 # branch (the compiler may optimize this even more)426 subpatternappend((IN, [item[0] for item in items]))427 return subpattern428 subpattern.append((BRANCH, (None, items)))429 return subpattern430def _parse_sub_cond(source, state, condgroup, verbose, nested):431 item_yes = _parse(source, state, verbose, nested + 1)432 if source.match("|"):433 item_no = _parse(source, state, verbose, nested + 1)434 if source.next == "|":435 raise source.error("conditional backref with more than two branches")436 else:437 item_no = None438 subpattern = SubPattern(state)439 subpattern.append((GROUPREF_EXISTS, (condgroup, item_yes, item_no)))440 return subpattern441def _parse(source, state, verbose, nested, first=False):442 # parse a simple pattern443 subpattern = SubPattern(state)444 # precompute constants into local variables445 subpatternappend = subpattern.append446 sourceget = source.get447 sourcematch = source.match448 _len = len449 _ord = ord450 while True:451 this = source.next452 if this is None:453 break # end of pattern454 if this in "|)":455 break # end of subpattern456 sourceget()457 if verbose:458 # skip whitespace and comments459 if this in WHITESPACE:460 continue461 if this == "#":462 while True:463 this = sourceget()464 if this is None or this == "\n":465 break466 continue467 if this[0] == "\\":468 code = _escape(source, this, state)469 subpatternappend(code)470 elif this not in SPECIAL_CHARS:471 subpatternappend((LITERAL, _ord(this)))472 elif this == "[":473 here = source.tell() - 1474 # character set475 set = []476 setappend = set.append477## if sourcematch(":"):478## pass # handle character classes479 if sourcematch("^"):480 setappend((NEGATE, None))481 # check remaining characters482 start = set[:]483 while True:484 this = sourceget()485 if this is None:486 raise source.error("unterminated character set",487 source.tell() - here)488 if this == "]" and set != start:489 break490 elif this[0] == "\\":491 code1 = _class_escape(source, this)492 else:493 code1 = LITERAL, _ord(this)494 if sourcematch("-"):495 # potential range496 that = sourceget()497 if that is None:498 raise source.error("unterminated character set",499 source.tell() - here)500 if that == "]":501 if code1[0] is IN:502 code1 = code1[1][0]503 setappend(code1)504 setappend((LITERAL, _ord("-")))505 break506 if that[0] == "\\":507 code2 = _class_escape(source, that)508 else:509 code2 = LITERAL, _ord(that)510 if code1[0] != LITERAL or code2[0] != LITERAL:511 msg = "bad character range %s-%s" % (this, that)512 raise source.error(msg, len(this) + 1 + len(that))513 lo = code1[1]514 hi = code2[1]515 if hi < lo:516 msg = "bad character range %s-%s" % (this, that)517 raise source.error(msg, len(this) + 1 + len(that))518 setappend((RANGE, (lo, hi)))519 else:520 if code1[0] is IN:521 code1 = code1[1][0]...
converters.py
Source:converters.py
1from ._compat import PY2, text_type, long_type, JYTHON, IRONPYTHON, unichr2import datetime3from decimal import Decimal4import re5import time6from .constants import FIELD_TYPE, FLAG7from .charset import charset_by_id, charset_to_encoding8def escape_item(val, charset, mapping=None):9 if mapping is None:10 mapping = encoders11 encoder = mapping.get(type(val))12 # Fallback to default when no encoder found13 if not encoder:14 try:15 encoder = mapping[text_type]16 except KeyError:17 raise TypeError("no default type converter defined")18 if encoder in (escape_dict, escape_sequence):19 val = encoder(val, charset, mapping)20 else:21 val = encoder(val, mapping)22 return val23def escape_dict(val, charset, mapping=None):24 n = {}25 for k, v in val.items():26 quoted = escape_item(v, charset, mapping)27 n[k] = quoted28 return n29def escape_sequence(val, charset, mapping=None):30 n = []31 for item in val:32 quoted = escape_item(item, charset, mapping)33 n.append(quoted)34 return "(" + ",".join(n) + ")"35def escape_set(val, charset, mapping=None):36 return ','.join([escape_item(x, charset, mapping) for x in val])37def escape_bool(value, mapping=None):38 return str(int(value))39def escape_object(value, mapping=None):40 return str(value)41def escape_int(value, mapping=None):42 return str(value)43def escape_float(value, mapping=None):44 return ('%.15g' % value)45_escape_table = [unichr(x) for x in range(128)]46_escape_table[0] = u'\\0'47_escape_table[ord('\\')] = u'\\\\'48_escape_table[ord('\n')] = u'\\n'49_escape_table[ord('\r')] = u'\\r'50_escape_table[ord('\032')] = u'\\Z'51_escape_table[ord('"')] = u'\\"'52_escape_table[ord("'")] = u"\\'"53def _escape_unicode(value, mapping=None):54 """escapes *value* without adding quote.55 Value should be unicode56 """57 return value.translate(_escape_table)58if PY2:59 def escape_string(value, mapping=None):60 """escape_string escapes *value* but not surround it with quotes.61 Value should be bytes or unicode.62 """63 if isinstance(value, unicode):64 return _escape_unicode(value)65 assert isinstance(value, (bytes, bytearray))66 value = value.replace('\\', '\\\\')67 value = value.replace('\0', '\\0')68 value = value.replace('\n', '\\n')69 value = value.replace('\r', '\\r')70 value = value.replace('\032', '\\Z')71 value = value.replace("'", "\\'")72 value = value.replace('"', '\\"')73 return value74 def escape_bytes(value, mapping=None):75 assert isinstance(value, (bytes, bytearray))76 return b"_binary'%s'" % escape_string(value)77else:78 escape_string = _escape_unicode79 # On Python ~3.5, str.decode('ascii', 'surrogateescape') is slow.80 # (fixed in Python 3.6, http://bugs.python.org/issue24870)81 # Workaround is str.decode('latin1') then translate 0x80-0xff into 0udc80-0udcff.82 # We can escape special chars and surrogateescape at once.83 _escape_bytes_table = _escape_table + [chr(i) for i in range(0xdc80, 0xdd00)]84 def escape_bytes(value, mapping=None):85 return "_binary'%s'" % value.decode('latin1').translate(_escape_bytes_table)86def escape_unicode(value, mapping=None):87 return u"'%s'" % _escape_unicode(value)88def escape_str(value, mapping=None):89 return "'%s'" % escape_string(str(value), mapping)90def escape_None(value, mapping=None):91 return 'NULL'92def escape_timedelta(obj, mapping=None):93 seconds = int(obj.seconds) % 6094 minutes = int(obj.seconds // 60) % 6095 hours = int(obj.seconds // 3600) % 24 + int(obj.days) * 2496 if obj.microseconds:97 fmt = "'{0:02d}:{1:02d}:{2:02d}.{3:06d}'"98 else:99 fmt = "'{0:02d}:{1:02d}:{2:02d}'"100 return fmt.format(hours, minutes, seconds, obj.microseconds)101def escape_time(obj, mapping=None):102 if obj.microsecond:103 fmt = "'{0.hour:02}:{0.minute:02}:{0.second:02}.{0.microsecond:06}'"104 else:105 fmt = "'{0.hour:02}:{0.minute:02}:{0.second:02}'"106 return fmt.format(obj)107def escape_datetime(obj, mapping=None):108 if obj.microsecond:109 fmt = "'{0.year:04}-{0.month:02}-{0.day:02} {0.hour:02}:{0.minute:02}:{0.second:02}.{0.microsecond:06}'"110 else:111 fmt = "'{0.year:04}-{0.month:02}-{0.day:02} {0.hour:02}:{0.minute:02}:{0.second:02}'"112 return fmt.format(obj)113def escape_date(obj, mapping=None):114 fmt = "'{0.year:04}-{0.month:02}-{0.day:02}'"115 return fmt.format(obj)116def escape_struct_time(obj, mapping=None):117 return escape_datetime(datetime.datetime(*obj[:6]))118def _convert_second_fraction(s):119 if not s:120 return 0121 # Pad zeros to ensure the fraction length in microseconds122 s = s.ljust(6, '0')123 return int(s[:6])124DATETIME_RE = re.compile(r"(\d{1,4})-(\d{1,2})-(\d{1,2})[T ](\d{1,2}):(\d{1,2}):(\d{1,2})(?:.(\d{1,6}))?")125def convert_datetime(obj):126 """Returns a DATETIME or TIMESTAMP column value as a datetime object:127 >>> datetime_or_None('2007-02-25 23:06:20')128 datetime.datetime(2007, 2, 25, 23, 6, 20)129 >>> datetime_or_None('2007-02-25T23:06:20')130 datetime.datetime(2007, 2, 25, 23, 6, 20)131 Illegal values are returned as None:132 >>> datetime_or_None('2007-02-31T23:06:20') is None133 True134 >>> datetime_or_None('0000-00-00 00:00:00') is None135 True136 """137 if not PY2 and isinstance(obj, (bytes, bytearray)):138 obj = obj.decode('ascii')139 m = DATETIME_RE.match(obj)140 if not m:141 return convert_date(obj)142 try:143 groups = list(m.groups())144 groups[-1] = _convert_second_fraction(groups[-1])145 return datetime.datetime(*[ int(x) for x in groups ])146 except ValueError:147 return convert_date(obj)148TIMEDELTA_RE = re.compile(r"(-)?(\d{1,3}):(\d{1,2}):(\d{1,2})(?:.(\d{1,6}))?")149def convert_timedelta(obj):150 """Returns a TIME column as a timedelta object:151 >>> timedelta_or_None('25:06:17')152 datetime.timedelta(1, 3977)153 >>> timedelta_or_None('-25:06:17')154 datetime.timedelta(-2, 83177)155 Illegal values are returned as None:156 >>> timedelta_or_None('random crap') is None157 True158 Note that MySQL always returns TIME columns as (+|-)HH:MM:SS, but159 can accept values as (+|-)DD HH:MM:SS. The latter format will not160 be parsed correctly by this function.161 """162 if not PY2 and isinstance(obj, (bytes, bytearray)):163 obj = obj.decode('ascii')164 m = TIMEDELTA_RE.match(obj)165 if not m:166 return None167 try:168 groups = list(m.groups())169 groups[-1] = _convert_second_fraction(groups[-1])170 negate = -1 if groups[0] else 1171 hours, minutes, seconds, microseconds = groups[1:]172 tdelta = datetime.timedelta(173 hours = int(hours),174 minutes = int(minutes),175 seconds = int(seconds),176 microseconds = int(microseconds)177 ) * negate178 return tdelta179 except ValueError:180 return None181TIME_RE = re.compile(r"(\d{1,2}):(\d{1,2}):(\d{1,2})(?:.(\d{1,6}))?")182def convert_time(obj):183 """Returns a TIME column as a time object:184 >>> time_or_None('15:06:17')185 datetime.time(15, 6, 17)186 Illegal values are returned as None:187 >>> time_or_None('-25:06:17') is None188 True189 >>> time_or_None('random crap') is None190 True191 Note that MySQL always returns TIME columns as (+|-)HH:MM:SS, but192 can accept values as (+|-)DD HH:MM:SS. The latter format will not193 be parsed correctly by this function.194 Also note that MySQL's TIME column corresponds more closely to195 Python's timedelta and not time. However if you want TIME columns196 to be treated as time-of-day and not a time offset, then you can197 use set this function as the converter for FIELD_TYPE.TIME.198 """199 if not PY2 and isinstance(obj, (bytes, bytearray)):200 obj = obj.decode('ascii')201 m = TIME_RE.match(obj)202 if not m:203 return None204 try:205 groups = list(m.groups())206 groups[-1] = _convert_second_fraction(groups[-1])207 hours, minutes, seconds, microseconds = groups208 return datetime.time(hour=int(hours), minute=int(minutes),209 second=int(seconds), microsecond=int(microseconds))210 except ValueError:211 return None212def convert_date(obj):213 """Returns a DATE column as a date object:214 >>> date_or_None('2007-02-26')215 datetime.date(2007, 2, 26)216 Illegal values are returned as None:217 >>> date_or_None('2007-02-31') is None218 True219 >>> date_or_None('0000-00-00') is None220 True221 """222 if not PY2 and isinstance(obj, (bytes, bytearray)):223 obj = obj.decode('ascii')224 try:225 return datetime.date(*[ int(x) for x in obj.split('-', 2) ])226 except ValueError:227 return None228def convert_mysql_timestamp(timestamp):229 """Convert a MySQL TIMESTAMP to a Timestamp object.230 MySQL >= 4.1 returns TIMESTAMP in the same format as DATETIME:231 >>> mysql_timestamp_converter('2007-02-25 22:32:17')232 datetime.datetime(2007, 2, 25, 22, 32, 17)233 MySQL < 4.1 uses a big string of numbers:234 >>> mysql_timestamp_converter('20070225223217')235 datetime.datetime(2007, 2, 25, 22, 32, 17)236 Illegal values are returned as None:237 >>> mysql_timestamp_converter('2007-02-31 22:32:17') is None238 True239 >>> mysql_timestamp_converter('00000000000000') is None240 True241 """242 if not PY2 and isinstance(timestamp, (bytes, bytearray)):243 timestamp = timestamp.decode('ascii')244 if timestamp[4] == '-':245 return convert_datetime(timestamp)246 timestamp += "0"*(14-len(timestamp)) # padding247 year, month, day, hour, minute, second = \248 int(timestamp[:4]), int(timestamp[4:6]), int(timestamp[6:8]), \249 int(timestamp[8:10]), int(timestamp[10:12]), int(timestamp[12:14])250 try:251 return datetime.datetime(year, month, day, hour, minute, second)252 except ValueError:253 return None254def convert_set(s):255 if isinstance(s, (bytes, bytearray)):256 return set(s.split(b","))257 return set(s.split(","))258def through(x):259 return x260#def convert_bit(b):261# b = "\x00" * (8 - len(b)) + b # pad w/ zeroes262# return struct.unpack(">Q", b)[0]263#264# the snippet above is right, but MySQLdb doesn't process bits,265# so we shouldn't either266convert_bit = through267def convert_characters(connection, field, data):268 field_charset = charset_by_id(field.charsetnr).name269 encoding = charset_to_encoding(field_charset)270 if field.flags & FLAG.SET:271 return convert_set(data.decode(encoding))272 if field.flags & FLAG.BINARY:273 return data274 if connection.use_unicode:275 data = data.decode(encoding)276 elif connection.charset != field_charset:277 data = data.decode(encoding)278 data = data.encode(connection.encoding)279 return data280encoders = {281 bool: escape_bool,282 int: escape_int,283 long_type: escape_int,284 float: escape_float,285 str: escape_str,286 text_type: escape_unicode,287 tuple: escape_sequence,288 list: escape_sequence,289 set: escape_sequence,290 frozenset: escape_sequence,291 dict: escape_dict,292 bytearray: escape_bytes,293 type(None): escape_None,294 datetime.date: escape_date,295 datetime.datetime: escape_datetime,296 datetime.timedelta: escape_timedelta,297 datetime.time: escape_time,298 time.struct_time: escape_struct_time,299 Decimal: escape_object,300}301if not PY2 or JYTHON or IRONPYTHON:302 encoders[bytes] = escape_bytes303decoders = {304 FIELD_TYPE.BIT: convert_bit,305 FIELD_TYPE.TINY: int,306 FIELD_TYPE.SHORT: int,307 FIELD_TYPE.LONG: int,308 FIELD_TYPE.FLOAT: float,309 FIELD_TYPE.DOUBLE: float,310 FIELD_TYPE.LONGLONG: int,311 FIELD_TYPE.INT24: int,312 FIELD_TYPE.YEAR: int,313 FIELD_TYPE.TIMESTAMP: convert_mysql_timestamp,314 FIELD_TYPE.DATETIME: convert_datetime,315 FIELD_TYPE.TIME: convert_timedelta,316 FIELD_TYPE.DATE: convert_date,317 FIELD_TYPE.SET: convert_set,318 FIELD_TYPE.BLOB: through,319 FIELD_TYPE.TINY_BLOB: through,320 FIELD_TYPE.MEDIUM_BLOB: through,321 FIELD_TYPE.LONG_BLOB: through,322 FIELD_TYPE.STRING: through,323 FIELD_TYPE.VAR_STRING: through,324 FIELD_TYPE.VARCHAR: through,325 FIELD_TYPE.DECIMAL: Decimal,326 FIELD_TYPE.NEWDECIMAL: Decimal,327}328# for MySQLdb compatibility329conversions = encoders.copy()330conversions.update(decoders)...
__init__.py
Source:__init__.py
...36 >>> Markup(Foo())37 Markup(u'<a href="#">foo</a>')38 If you want object passed being always treated as unsafe you can use the39 :meth:`escape` classmethod to create a :class:`Markup` object:40 >>> Markup.escape("Hello <em>World</em>!")41 Markup(u'Hello <em>World</em>!')42 Operations on a markup string are markup aware which means that all43 arguments are passed through the :func:`escape` function:44 >>> em = Markup("<em>%s</em>")45 >>> em % "foo & bar"46 Markup(u'<em>foo & bar</em>')47 >>> strong = Markup("<strong>%(text)s</strong>")48 >>> strong % {'text': '<blink>hacker here</blink>'}49 Markup(u'<strong><blink>hacker here</blink></strong>')50 >>> Markup("<em>Hello</em> ") + "<foo>"51 Markup(u'<em>Hello</em> <foo>')52 """53 __slots__ = ()54 def __new__(cls, base=u'', encoding=None, errors='strict'):55 if hasattr(base, '__html__'):56 base = base.__html__()57 if encoding is None:58 return text_type.__new__(cls, base)59 return text_type.__new__(cls, base, encoding, errors)60 def __html__(self):61 return self62 def __add__(self, other):63 if isinstance(other, string_types) or hasattr(other, '__html__'):64 return self.__class__(super(Markup, self).__add__(self.escape(other)))65 return NotImplemented66 def __radd__(self, other):67 if hasattr(other, '__html__') or isinstance(other, string_types):68 return self.escape(other).__add__(self)69 return NotImplemented70 def __mul__(self, num):71 if isinstance(num, int_types):72 return self.__class__(text_type.__mul__(self, num))73 return NotImplemented74 __rmul__ = __mul__75 def __mod__(self, arg):76 if isinstance(arg, tuple):77 arg = tuple(_MarkupEscapeHelper(x, self.escape) for x in arg)78 else:79 arg = _MarkupEscapeHelper(arg, self.escape)80 return self.__class__(text_type.__mod__(self, arg))81 def __repr__(self):82 return '%s(%s)' % (83 self.__class__.__name__,84 text_type.__repr__(self)85 )86 def join(self, seq):87 return self.__class__(text_type.join(self, map(self.escape, seq)))88 join.__doc__ = text_type.join.__doc__89 def split(self, *args, **kwargs):90 return list(map(self.__class__, text_type.split(self, *args, **kwargs)))91 split.__doc__ = text_type.split.__doc__92 def rsplit(self, *args, **kwargs):93 return list(map(self.__class__, text_type.rsplit(self, *args, **kwargs)))94 rsplit.__doc__ = text_type.rsplit.__doc__95 def splitlines(self, *args, **kwargs):96 return list(map(self.__class__, text_type.splitlines(97 self, *args, **kwargs)))98 splitlines.__doc__ = text_type.splitlines.__doc__99 def unescape(self):100 r"""Unescape markup again into an text_type string. This also resolves101 known HTML4 and XHTML entities:102 >>> Markup("Main » <em>About</em>").unescape()103 u'Main \xbb <em>About</em>'104 """105 from markupsafe._constants import HTML_ENTITIES106 def handle_match(m):107 name = m.group(1)108 if name in HTML_ENTITIES:109 return unichr(HTML_ENTITIES[name])110 try:111 if name[:2] in ('#x', '#X'):112 return unichr(int(name[2:], 16))113 elif name.startswith('#'):114 return unichr(int(name[1:]))115 except ValueError:116 pass117 return u''118 return _entity_re.sub(handle_match, text_type(self))119 def striptags(self):120 r"""Unescape markup into an text_type string and strip all tags. This121 also resolves known HTML4 and XHTML entities. Whitespace is122 normalized to one:123 >>> Markup("Main » <em>About</em>").striptags()124 u'Main \xbb About'125 """126 stripped = u' '.join(_striptags_re.sub('', self).split())127 return Markup(stripped).unescape()128 @classmethod129 def escape(cls, s):130 """Escape the string. Works like :func:`escape` with the difference131 that for subclasses of :class:`Markup` this function would return the132 correct subclass.133 """134 rv = escape(s)135 if rv.__class__ is not cls:136 return cls(rv)137 return rv138 def make_simple_escaping_wrapper(name):139 orig = getattr(text_type, name)140 def func(self, *args, **kwargs):141 args = _escape_argspec(list(args), enumerate(args), self.escape)142 _escape_argspec(kwargs, iteritems(kwargs), self.escape)143 return self.__class__(orig(self, *args, **kwargs))144 func.__name__ = orig.__name__145 func.__doc__ = orig.__doc__146 return func147 for method in '__getitem__', 'capitalize', \148 'title', 'lower', 'upper', 'replace', 'ljust', \149 'rjust', 'lstrip', 'rstrip', 'center', 'strip', \150 'translate', 'expandtabs', 'swapcase', 'zfill':151 locals()[method] = make_simple_escaping_wrapper(method)152 # new in python 2.5153 if hasattr(text_type, 'partition'):154 def partition(self, sep):155 return tuple(map(self.__class__,156 text_type.partition(self, self.escape(sep))))157 def rpartition(self, sep):158 return tuple(map(self.__class__,159 text_type.rpartition(self, self.escape(sep))))160 # new in python 2.6161 if hasattr(text_type, 'format'):162 def format(*args, **kwargs):163 self, args = args[0], args[1:]164 formatter = EscapeFormatter(self.escape)165 kwargs = _MagicFormatMapping(args, kwargs)166 return self.__class__(formatter.vformat(self, args, kwargs))167 def __html_format__(self, format_spec):168 if format_spec:169 raise ValueError('Unsupported format specification '170 'for Markup.')171 return self172 # not in python 3173 if hasattr(text_type, '__getslice__'):174 __getslice__ = make_simple_escaping_wrapper('__getslice__')175 del method, make_simple_escaping_wrapper176class _MagicFormatMapping(Mapping):177 """This class implements a dummy wrapper to fix a bug in the Python178 standard library for string formatting.179 See http://bugs.python.org/issue13598 for information about why180 this is necessary.181 """182 def __init__(self, args, kwargs):183 self._args = args184 self._kwargs = kwargs185 self._last_index = 0186 def __getitem__(self, key):187 if key == '':188 idx = self._last_index189 self._last_index += 1190 try:191 return self._args[idx]192 except LookupError:193 pass194 key = str(idx)195 return self._kwargs[key]196 def __iter__(self):197 return iter(self._kwargs)198 def __len__(self):199 return len(self._kwargs)200if hasattr(text_type, 'format'):201 class EscapeFormatter(string.Formatter):202 def __init__(self, escape):203 self.escape = escape204 def format_field(self, value, format_spec):205 if hasattr(value, '__html_format__'):206 rv = value.__html_format__(format_spec)207 elif hasattr(value, '__html__'):208 if format_spec:209 raise ValueError('No format specification allowed '210 'when formatting an object with '211 'its __html__ method.')212 rv = value.__html__()213 else:214 rv = string.Formatter.format_field(self, value, format_spec)215 return text_type(self.escape(rv))216def _escape_argspec(obj, iterable, escape):217 """Helper for various string-wrapped functions."""218 for key, value in iterable:219 if hasattr(value, '__html__') or isinstance(value, string_types):220 obj[key] = escape(value)221 return obj222class _MarkupEscapeHelper(object):223 """Helper for Markup.__mod__"""224 def __init__(self, obj, escape):225 self.obj = obj226 self.escape = escape227 __getitem__ = lambda s, x: _MarkupEscapeHelper(s.obj[x], s.escape)228 __unicode__ = __str__ = lambda s: text_type(s.escape(s.obj))229 __repr__ = lambda s: str(s.escape(repr(s.obj)))230 __int__ = lambda s: int(s.obj)231 __float__ = lambda s: float(s.obj)232# we have to import it down here as the speedups and native233# modules imports the markup type which is define above.234try:235 from markupsafe._speedups import escape, escape_silent, soft_unicode236except ImportError:237 from markupsafe._native import escape, escape_silent, soft_unicode238if not PY2:239 soft_str = soft_unicode...
middlewares.py
Source:middlewares.py
...59 use_type = self.__filter_param(path, _get_key)60 else:61 use_type = escape_type62 if use_type == 'url':63 new_value = url_escape(_get_value)64 elif use_type == 'texteditor':65 new_value = texteditor_escape(_get_value)66 else:67 new_value = html_escape(_get_value)68 else:69 new_value = html_escape(_get_value, True)70 new_value_list.append(new_value)71 data_copy.setlist(_get_key, new_value_list)72 return data_copy73 def __filter_param(self, path, param):74 """75 ç¹æ®pathå¤ç76 @param path: è·¯å¾77 @param param: åæ°78 @return: 'url/texteditor'79 """80 use_url_paths, use_texteditor_paths = self.__filter_path_list()81 result = self.__check_escape_type(path, param, use_url_paths, 'url')82 # å¯ææ¬å
容è¿æ»¤83 if result == 'html':...
resource.py
Source:resource.py
1# -*- coding: utf-8 -*-2"""3 pygments.lexers.resource4 ~~~~~~~~~~~~~~~~~~~~~~~~5 Lexer for resource definition files.6 :copyright: Copyright 2006-2017 by the Pygments team, see AUTHORS.7 :license: BSD, see LICENSE for details.8"""9import re10from pygments.lexer import RegexLexer, bygroups, words11from pygments.token import Comment, String, Number, Operator, Text, \12 Keyword, Name13__all__ = ['ResourceLexer']14class ResourceLexer(RegexLexer):15 """Lexer for `ICU Resource bundles16 <http://userguide.icu-project.org/locale/resources>`_.17 .. versionadded:: 2.018 """19 name = 'ResourceBundle'20 aliases = ['resource', 'resourcebundle']21 filenames = ['*.txt']22 _types = (':table', ':array', ':string', ':bin', ':import', ':intvector',23 ':int', ':alias')24 flags = re.MULTILINE | re.IGNORECASE25 tokens = {26 'root': [27 (r'//.*?$', Comment),28 (r'"', String, 'string'),29 (r'-?\d+', Number.Integer),30 (r'[,{}]', Operator),31 (r'([^\s{:]+)(\s*)(%s?)' % '|'.join(_types),32 bygroups(Name, Text, Keyword)),33 (r'\s+', Text),34 (words(_types), Keyword),35 ],36 'string': [37 (r'(\\x[0-9a-f]{2}|\\u[0-9a-f]{4}|\\U00[0-9a-f]{6}|'38 r'\\[0-7]{1,3}|\\c.|\\[abtnvfre\'"?\\]|\\\{|[^"{\\])+', String),39 (r'\{', String.Escape, 'msgname'),40 (r'"', String, '#pop')41 ],42 'msgname': [43 (r'([^{},]+)(\s*)', bygroups(Name, String.Escape), ('#pop', 'message'))44 ],45 'message': [46 (r'\{', String.Escape, 'msgname'),47 (r'\}', String.Escape, '#pop'),48 (r'(,)(\s*)([a-z]+)(\s*\})',49 bygroups(Operator, String.Escape, Keyword, String.Escape), '#pop'),50 (r'(,)(\s*)([a-z]+)(\s*)(,)(\s*)(offset)(\s*)(:)(\s*)(-?\d+)(\s*)',51 bygroups(Operator, String.Escape, Keyword, String.Escape, Operator,52 String.Escape, Operator.Word, String.Escape, Operator,53 String.Escape, Number.Integer, String.Escape), 'choice'),54 (r'(,)(\s*)([a-z]+)(\s*)(,)(\s*)',55 bygroups(Operator, String.Escape, Keyword, String.Escape, Operator,56 String.Escape), 'choice'),57 (r'\s+', String.Escape)58 ],59 'choice': [60 (r'(=|<|>|<=|>=|!=)(-?\d+)(\s*\{)',61 bygroups(Operator, Number.Integer, String.Escape), 'message'),62 (r'([a-z]+)(\s*\{)', bygroups(Keyword.Type, String.Escape), 'str'),63 (r'\}', String.Escape, ('#pop', '#pop')),64 (r'\s+', String.Escape)65 ],66 'str': [67 (r'\}', String.Escape, '#pop'),68 (r'\{', String.Escape, 'msgname'),69 (r'[^{}]+', String)70 ]71 }72 def analyse_text(text):73 if text.startswith('root:table'):...
test_force_escape.py
Source:test_force_escape.py
...41 def test_force_escape08(self):42 output = self.engine.render_to_string('force-escape08', {"a": "x&y"})43 self.assertEqual(output, "x&amp;y")44class FunctionTests(SimpleTestCase):45 def test_escape(self):46 escaped = force_escape('<some html & special characters > here')47 self.assertEqual(escaped, '<some html & special characters > here')48 self.assertIsInstance(escaped, SafeData)49 def test_unicode(self):50 self.assertEqual(51 force_escape('<some html & special characters > here ÄÃ
â¬Â£'),52 '<some html & special characters > here \u0110\xc5\u20ac\xa3',...
test_misc.py
Source:test_misc.py
...31 terms = ['',32 'word',33 'two words']34 for term, expected_term in zip(terms, terms):35 assert_equal(_sql_escape(term), expected_term)36 def test_escape_chararacter_is_escaped(self):37 """Asserts that the escape character is escaped"""38 term = r'backslash \ character'39 assert_equal (_sql_escape(term, escape='\\'),40 r'backslash \\ character')41 term = 'surprise!'42 assert_equal (_sql_escape(term, escape='!'),43 r'surprise!!')44 def test_default_escape_character_is_a_backslash(self):45 """Asserts that the default escape character is the backslash"""46 term = r'backslash \ character'47 assert_equal (_sql_escape(term),48 r'backslash \\ character')49 def test_sql_like_special_characters_are_escaped(self):50 """Asserts that '%' and '_' are escaped correctly"""51 terms = [52 (r'percents %', r'percents \%'),53 (r'underscores _', r'underscores \_'),54 (r'backslash \ ', r'backslash \\ '),55 (r'all three \ _%', r'all three \\ \_\%'),56 ]57 for term, expected_result in terms:...
char_escape.py
Source:char_escape.py
...2627ESCAPED_CHARSET_MAP_DICT = EscapeCharsetMapClass()282930def char_escape(s: str, escape_charset, escape_char_type: str):31 """32 :param s:33 :param escape_charset: None means all char will be escaped34 :param escape_char_type:35 :return:36 """37 if escape_charset is not None:38 new_s = s39 for each_escape_char in escape_charset:40 new_s = new_s.replace(each_escape_char,41 getattr(ESCAPED_CHARSET_MAP_DICT[each_escape_char], escape_char_type))42 else:43 new_s = []44 for each_char in s:45 new_s.append(getattr(ESCAPED_CHARSET_MAP_DICT[each_char], escape_char_type))4647 new_s = ''.join(new_s)48 s = new_s4950 return s515253def htmltitle2path(htmltitle, escape_char_type='url'):54 path = char_escape(htmltitle, INVALID_FILE_CHAR_SET, escape_char_type)55 path = ''.join(re.split('\s+', path)) # in case other blank char
...
Using AI Code Generation
1const page = await context.newPage();2await page.fill('input[name="q"]', 'Hello World');3await page.click('input[name="btnK"]');4await page.waitForNavigation();5await page.screenshot({ path: 'example.png' });6await page.close();7const page = await context.newPage();8const searchBox = await page.$('input[name="q"]');9await searchBox.fill('Hello World');10await searchBox.click('input[name="btnK"]');11await page.waitForNavigation();12await page.screenshot({ path: 'example.png' });13await page.close();14const page = await context.newPage();15const frame = await page.frame({ name: 'frameName' });16const searchBox = await frame.$('input[name="q"]');17await searchBox.fill('Hello World');18await searchBox.click('input[name="btnK"]');19await page.waitForNavigation();20await page.screenshot({ path: 'example.png' });21await page.close();22const page = await context.newPage();23const searchBox = await page.$('input[name="q"]');24await searchBox.evaluate((element) => {25 element.value = 'Hello World';26});27await searchBox.click('input[name="btnK"]');28await page.waitForNavigation();29await page.screenshot({ path: 'example.png' });30await page.close();31const page = await context.newPage();32await page.fill('input[name="q"]', 'Hello World');33await page.keyboard.press('Enter');34await page.waitForNavigation();35await page.screenshot({ path: 'example.png' });36await page.close();37const page = await context.newPage();38await page.fill('input[name="q"]', 'Hello World');39await page.click('input[name="btnK"]');40await page.waitForNavigation();41await page.screenshot({ path: 'example.png' });42await page.close();
Using AI Code Generation
1const { escape } = require('playwright/lib/utils/escape');2const { escape } = require('playwright/lib/utils/escape');3const { escape } = require('playwright/lib/utils/escape');4const { escape } = require('playwright/lib/utils/escape');5const { escape } = require('playwright/lib/utils/escape');6const { escape } = require('playwright/lib/utils/escape');7const { escape } = require('playwright/lib/utils/escape');8const { escape } = require('playwright/lib/utils/escape');9const { escape } = require('playwright/lib/utils/escape');10const { escape } = require('playwright/lib/utils/escape');11const { escape } = require('playwright/lib/utils/escape');12const { escape } = require('playwright/lib/utils/escape');
Using AI Code Generation
1const { escape } = require('playwright/lib/utils/escape');2const path = escape`path/to/file`;3const { escape } = require('playwright/lib/utils/escape');4const path = escape`path${'/'}/to${'/'}/file`;5const { escape } = require('playwright/lib/utils/escape');6const path = escape`path${'/'}/to${'/'}/file`;7const { escape } = require('playwright/lib/utils/escape');8const path = escape`path${'/'}/to${'/'}/file`;9const { escape } = require('playwright/lib/utils/escape');10const path = escape`path${'/'}/to${'/'}/file`;11const { escape } = require('playwright/lib/utils/escape');12const path = escape`path${'/'}/to${'/'}/file`;13const { escape } = require('playwright/lib/utils/escape');14const path = escape`path${'/'}/to${'/'}/file`;15const { escape } = require('playwright/lib/utils/escape');16const path = escape`path${'/'}/to${'/'}/file`;17const { escape } = require('playwright/lib/utils/escape');18const path = escape`path${'/'}/to${'/'}/file`;
Using AI Code Generation
1const { escape } = require('@playwright/test/lib/utils/escape');2const escapedString = escape('string with "quotes"');3console.log(escapedString);4const { test } = require('@playwright/test');5test('sample test', async ({ page }) => {6 await page.screenshot({ path: `screenshots/${escapedString}.png` });7});8const escapedString = escape('string with \'quotes\'');9const escapedString = escape('string with \\backslash');10const escapedString = escape('string with /forwardslash');11const escapedString = escape('string with \t tab');12const escapedString = escape('string with13new line');14const escapedString = escape('string with \r carriage return');15const escapedString = escape('string with \f form
Using AI Code Generation
1const { escape } = require('playwright/lib/utils/escape');2const escapedSelector = escape(selector);3console.log(escapedSelector);4const { escape } = require('playwright/lib/utils/escape');5const escapedSelector = escape(selector);6console.log(escapedSelector);7const { escape } = require('playwright/lib/utils/escape');8const escapedSelector = escape(selector);9console.log(escapedSelector);10const { escape } = require('playwright/lib/utils/escape');11const escapedSelector = escape(selector);12console.log(escapedSelector);13const { escape } = require('playwright/lib/utils/escape');14const escapedSelector = escape(selector);15console.log(escapedSelector);16const { escape } = require('playwright/lib/utils/escape');17const escapedSelector = escape(selector);18console.log(escapedSelector);19const { escape } = require('playwright/lib/utils/escape');20const escapedSelector = escape(selector);21console.log(escapedSelector);22const { escape } = require('playwright/lib/utils/escape');23const escapedSelector = escape(selector);24console.log(escapedSelector);
Using AI Code Generation
1const { escape } = require('@playwright/test/lib/utils/escape');2const { Test } = require('@playwright/test');3const { test } = Test;4test('example test', async ({ page }) => {5 await page.goto(url);6});
Using AI Code Generation
1const { escape } = require('playwright/lib/utils/selectorEscape');2const selector = escape('a[href="/some/path"]');3await page.click(selector);4const { escape } = require('playwright/lib/utils/selectorEscape');5const selector = escape('a[href="/some/path"]');6await page.click(selector);7const { escape } = require('playwright/lib/utils/selectorEscape');8const selector = escape('a[href="/some/path"]');9await page.click(selector);10const { escape } = require('playwright/lib/utils/selectorEscape');11const selector = escape('a[href="/some/path"]');12await page.click(selector);13const { escape } = require('playwright/lib/utils/selectorEscape');14const selector = escape('a[href="/some/path"]');15await page.click(selector);16const { escape } = require('playwright/lib/utils/selectorEscape');17const selector = escape('a[href="/some/path"]');18await page.click(selector);19const { escape } = require('playwright/lib/utils/selectorEscape');20const selector = escape('a[href="/some/path"]');21await page.click(selector);22const { escape } = require('playwright/lib/utils/selectorEscape');23const selector = escape('a[href="/some/path"]');24await page.click(selector);25const { escape } = require('playwright/lib/utils/selectorEscape');26const selector = escape('a[href="/some/path
LambdaTest’s Playwright tutorial will give you a broader idea about the Playwright automation framework, its unique features, and use cases with examples to exceed your understanding of Playwright testing. This tutorial will give A to Z guidance, from installing the Playwright framework to some best practices and advanced concepts.
Get 100 minutes of automation test minutes FREE!!