2025-12-25 upload
This commit is contained in:
41
venv/Lib/site-packages/mitmproxy/command_lexer.py
Normal file
41
venv/Lib/site-packages/mitmproxy/command_lexer.py
Normal file
@@ -0,0 +1,41 @@
|
||||
import re
|
||||
|
||||
import pyparsing
|
||||
|
||||
# TODO: There is a lot of work to be done here.
|
||||
# The current implementation is written in a way that _any_ input is valid,
|
||||
# which does not make sense once things get more complex.
|
||||
|
||||
PartialQuotedString = pyparsing.Regex(
|
||||
re.compile(
|
||||
r"""
|
||||
"[^"]*(?:"|$) # double-quoted string that ends with double quote or EOF
|
||||
|
|
||||
'[^']*(?:'|$) # single-quoted string that ends with double quote or EOF
|
||||
""",
|
||||
re.VERBOSE,
|
||||
)
|
||||
)
|
||||
|
||||
expr = pyparsing.ZeroOrMore(
|
||||
PartialQuotedString
|
||||
| pyparsing.Word(" \r\n\t")
|
||||
| pyparsing.CharsNotIn("""'" \r\n\t""")
|
||||
).leaveWhitespace()
|
||||
|
||||
|
||||
def quote(val: str) -> str:
|
||||
if val and all(char not in val for char in "'\" \r\n\t"):
|
||||
return val
|
||||
if '"' not in val:
|
||||
return f'"{val}"'
|
||||
if "'" not in val:
|
||||
return f"'{val}'"
|
||||
return '"' + val.replace('"', r"\x22") + '"'
|
||||
|
||||
|
||||
def unquote(x: str) -> str:
|
||||
if len(x) > 1 and x[0] in "'\"" and x[0] == x[-1]:
|
||||
return x[1:-1]
|
||||
else:
|
||||
return x
|
||||
Reference in New Issue
Block a user