summaryrefslogtreecommitdiff
path: root/venv/lib/python3.11/site-packages/jsbeautifier/unpackers/__init__.py
diff options
context:
space:
mode:
authorcyfraeviolae <cyfraeviolae>2024-04-03 03:10:44 -0400
committercyfraeviolae <cyfraeviolae>2024-04-03 03:10:44 -0400
commit6d7ba58f880be618ade07f8ea080fe8c4bf8a896 (patch)
treeb1c931051ffcebd2bd9d61d98d6233ffa289bbce /venv/lib/python3.11/site-packages/jsbeautifier/unpackers/__init__.py
parent4f884c9abc32990b4061a1bb6997b4b37e58ea0b (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__.py73
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