diff options
author | cyfraeviolae <cyfraeviolae> | 2024-04-03 03:10:44 -0400 |
---|---|---|
committer | cyfraeviolae <cyfraeviolae> | 2024-04-03 03:10:44 -0400 |
commit | 6d7ba58f880be618ade07f8ea080fe8c4bf8a896 (patch) | |
tree | b1c931051ffcebd2bd9d61d98d6233ffa289bbce /venv/lib/python3.11/site-packages/jsbeautifier/unpackers/__init__.py | |
parent | 4f884c9abc32990b4061a1bb6997b4b37e58ea0b (diff) |
venv
Diffstat (limited to 'venv/lib/python3.11/site-packages/jsbeautifier/unpackers/__init__.py')
-rw-r--r-- | venv/lib/python3.11/site-packages/jsbeautifier/unpackers/__init__.py | 73 |
1 files changed, 73 insertions, 0 deletions
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 <a.little.coder@gmail.com> +# + +"""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 |