From 6d7ba58f880be618ade07f8ea080fe8c4bf8a896 Mon Sep 17 00:00:00 2001 From: cyfraeviolae Date: Wed, 3 Apr 2024 03:10:44 -0400 Subject: venv --- .../jsbeautifier/unpackers/__init__.py | 73 ++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 venv/lib/python3.11/site-packages/jsbeautifier/unpackers/__init__.py (limited to 'venv/lib/python3.11/site-packages/jsbeautifier/unpackers/__init__.py') diff --git a/venv/lib/python3.11/site-packages/jsbeautifier/unpackers/__init__.py b/venv/lib/python3.11/site-packages/jsbeautifier/unpackers/__init__.py new file mode 100644 index 0000000..01c254f --- /dev/null +++ b/venv/lib/python3.11/site-packages/jsbeautifier/unpackers/__init__.py @@ -0,0 +1,73 @@ +# +# General code for JSBeautifier unpackers infrastructure. See README.specs +# written by Stefano Sanfilippo +# + +"""General code for JSBeautifier unpackers infrastructure.""" + +import pkgutil +import re +from jsbeautifier.unpackers import evalbased + +# NOTE: AT THE MOMENT, IT IS DEACTIVATED FOR YOUR SECURITY: it runs js! +BLACKLIST = ["jsbeautifier.unpackers.evalbased"] + + +class UnpackingError(Exception): + """Badly packed source or general error. Argument is a + meaningful description.""" + + pass + + +def getunpackers(): + """Scans the unpackers dir, finds unpackers and add them to UNPACKERS list. + An unpacker will be loaded only if it is a valid python module (name must + adhere to naming conventions) and it is not blacklisted (i.e. inserted + into BLACKLIST.""" + path = __path__ + prefix = __name__ + "." + unpackers = [] + interface = ["unpack", "detect", "PRIORITY"] + for _importer, modname, _ispkg in pkgutil.iter_modules(path, prefix): + if "tests" not in modname and modname not in BLACKLIST: + try: + module = __import__(modname, fromlist=interface) + except ImportError: + raise UnpackingError("Bad unpacker: %s" % modname) + else: + unpackers.append(module) + + return sorted(unpackers, key=lambda mod: mod.PRIORITY) + + +UNPACKERS = getunpackers() + + +def run(source, evalcode=False): + """Runs the applicable unpackers and return unpacked source as a string.""" + for unpacker in [mod for mod in UNPACKERS if mod.detect(source)]: + source = unpacker.unpack(source) + if evalcode and evalbased.detect(source): + source = evalbased.unpack(source) + return source + + +def filtercomments(source): + """NOT USED: strips trailing comments and put them at the top.""" + trailing_comments = [] + comment = True + + while comment: + if re.search(r"^\s*\/\*", source): + comment = source[0, source.index("*/") + 2] + elif re.search(r"^\s*\/\/", source): + comment = re.search(r"^\s*\/\/", source).group(0) + else: + comment = None + + if comment: + source = re.sub(r"^\s+", "", source[len(comment) :]) + trailing_comments.append(comment) + + return "\n".join(trailing_comments) + source -- cgit v1.2.3