REDROOM
PHP 8.5.2
Path:
Logout
Edit File
Size: 2.54 KB
Close
/lib/python3/dist-packages/mdurl/_encode.py
Text
Base64
from __future__ import annotations from collections.abc import Sequence from string import ascii_letters, digits, hexdigits from urllib.parse import quote as encode_uri_component ASCII_LETTERS_AND_DIGITS = ascii_letters + digits ENCODE_DEFAULT_CHARS = ";/?:@&=+$,-_.!~*'()#" ENCODE_COMPONENT_CHARS = "-_.!~*'()" encode_cache: dict[str, list[str]] = {} # Create a lookup array where anything but characters in `chars` string # and alphanumeric chars is percent-encoded. def get_encode_cache(exclude: str) -> Sequence[str]: if exclude in encode_cache: return encode_cache[exclude] cache: list[str] = [] encode_cache[exclude] = cache for i in range(128): ch = chr(i) if ch in ASCII_LETTERS_AND_DIGITS: # always allow unencoded alphanumeric characters cache.append(ch) else: cache.append("%" + ("0" + hex(i)[2:].upper())[-2:]) for i in range(len(exclude)): cache[ord(exclude[i])] = exclude[i] return cache # Encode unsafe characters with percent-encoding, skipping already # encoded sequences. # # - string - string to encode # - exclude - list of characters to ignore (in addition to a-zA-Z0-9) # - keepEscaped - don't encode '%' in a correct escape sequence (default: true) def encode( string: str, exclude: str = ENCODE_DEFAULT_CHARS, *, keep_escaped: bool = True ) -> str: result = "" cache = get_encode_cache(exclude) l = len(string) # noqa: E741 i = 0 while i < l: code = ord(string[i]) # % if keep_escaped and code == 0x25 and i + 2 < l: if all(c in hexdigits for c in string[i + 1 : i + 3]): result += string[i : i + 3] i += 2 i += 1 # JS for loop statement3 continue if code < 128: result += cache[code] i += 1 # JS for loop statement3 continue if code >= 0xD800 and code <= 0xDFFF: if code >= 0xD800 and code <= 0xDBFF and i + 1 < l: next_code = ord(string[i + 1]) if next_code >= 0xDC00 and next_code <= 0xDFFF: result += encode_uri_component(string[i] + string[i + 1]) i += 1 i += 1 # JS for loop statement3 continue result += "%EF%BF%BD" i += 1 # JS for loop statement3 continue result += encode_uri_component(string[i]) i += 1 # JS for loop statement3 return result
Save
Close
Exit & Reset
Text mode: syntax highlighting auto-detects file type.
Directory Contents
Dirs: 1 × Files: 7
Delete Selected
Select All
Select None
Sort:
Name
Size
Modified
Enable drag-to-move
Name
Size
Perms
Modified
Actions
__pycache__
DIR
-
drwxr-xr-x
2026-01-08 12:54:41
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
py.typed
26 B
lrw-r--r--
2022-10-17 20:23:30
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
_decode.py
2.93 KB
lrw-r--r--
2022-10-17 20:23:30
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
_encode.py
2.54 KB
lrw-r--r--
2022-10-17 20:23:30
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
_format.py
626 B
lrw-r--r--
2022-10-17 20:23:30
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
_parse.py
11.11 KB
lrw-r--r--
2022-10-17 20:23:30
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
_url.py
284 B
lrw-r--r--
2022-10-17 20:23:30
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
__init__.py
547 B
lrw-r--r--
2022-10-17 20:23:30
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
Zip Selected
If ZipArchive is unavailable, a
.tar
will be created (no compression).