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/cli | |
parent | 4f884c9abc32990b4061a1bb6997b4b37e58ea0b (diff) |
venv
Diffstat (limited to 'venv/lib/python3.11/site-packages/jsbeautifier/cli')
-rw-r--r-- | venv/lib/python3.11/site-packages/jsbeautifier/cli/__init__.py | 243 | ||||
-rw-r--r-- | venv/lib/python3.11/site-packages/jsbeautifier/cli/__pycache__/__init__.cpython-311.pyc | bin | 0 -> 9989 bytes |
2 files changed, 243 insertions, 0 deletions
diff --git a/venv/lib/python3.11/site-packages/jsbeautifier/cli/__init__.py b/venv/lib/python3.11/site-packages/jsbeautifier/cli/__init__.py new file mode 100644 index 0000000..73f0c48 --- /dev/null +++ b/venv/lib/python3.11/site-packages/jsbeautifier/cli/__init__.py @@ -0,0 +1,243 @@ +from __future__ import print_function +import sys +import os +import platform +import io +import getopt +import re +import string +import errno +import copy +import glob +from jsbeautifier.__version__ import __version__ +from jsbeautifier.javascript.options import BeautifierOptions +from jsbeautifier.javascript.beautifier import Beautifier + +# +# The MIT License (MIT) + +# Copyright (c) 2007-2020 Einar Lielmanis, Liam Newman, and contributors. + +# Permission is hereby granted, free of charge, to any person +# obtaining a copy of this software and associated documentation files +# (the "Software"), to deal in the Software without restriction, +# including without limitation the rights to use, copy, modify, merge, +# publish, distribute, sublicense, and/or sell copies of the Software, +# and to permit persons to whom the Software is furnished to do so, +# subject to the following conditions: + +# The above copyright notice and this permission notice shall be +# included in all copies or substantial portions of the Software. + +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +__all__ = [ + "MissingInputStreamError", + "process_file", + "get_filepaths_from_params", + "integrate_editorconfig_options", + "write_beautified_output", +] + + +class MissingInputStreamError(Exception): + pass + + +def set_file_editorconfig_opts(filename, js_options): + from editorconfig import get_properties, EditorConfigError + + try: + _ecoptions = get_properties(os.path.abspath(filename)) + + if _ecoptions.get("indent_style") == "tab": + js_options.indent_with_tabs = True + elif _ecoptions.get("indent_style") == "space": + js_options.indent_with_tabs = False + + if _ecoptions.get("indent_size"): + js_options.indent_size = int(_ecoptions["indent_size"]) + + if _ecoptions.get("max_line_length"): + if _ecoptions.get("max_line_length") == "off": + js_options.wrap_line_length = 0 + else: + js_options.wrap_line_length = int(_ecoptions["max_line_length"]) + + if _ecoptions.get("insert_final_newline") == "true": + js_options.end_with_newline = True + elif _ecoptions.get("insert_final_newline") == "false": + js_options.end_with_newline = False + + if _ecoptions.get("end_of_line"): + if _ecoptions["end_of_line"] == "cr": + js_options.eol = "\r" + elif _ecoptions["end_of_line"] == "lf": + js_options.eol = "\n" + elif _ecoptions["end_of_line"] == "crlf": + js_options.eol = "\r\n" + + except EditorConfigError: + # do not error on bad editor config + print("Error loading EditorConfig. Ignoring.", file=sys.stderr) + + +def process_file(file_name, opts, beautify_code): + input_string = "" + if file_name == "-": # stdin + if sys.stdin.isatty(): + raise MissingInputStreamError() + + stream = sys.stdin + if platform.platform().lower().startswith("windows"): + if sys.version_info.major >= 3: + # for python 3 on windows this prevents conversion + stream = io.TextIOWrapper(sys.stdin.buffer, newline="") + elif platform.architecture()[0] == "32bit": + # for python 2 x86 on windows this prevents conversion + import msvcrt + + msvcrt.setmode(sys.stdin.fileno(), os.O_BINARY) + else: + raise Exception( + "Pipe to stdin not supported on Windows with Python 2.x 64-bit." + ) + + input_string = stream.read() + + # if you pipe an empty string, that is a failure + if input_string == "": + raise MissingInputStreamError() + else: + stream = io.open(file_name, "rt", newline="", encoding="UTF-8") + input_string = stream.read() + + return beautify_code(input_string, opts) + + +def mkdir_p(path): + try: + if path: + os.makedirs(path) + except OSError as exc: # Python >2.5 + if exc.errno == errno.EEXIST and os.path.isdir(path): + pass + else: + raise Exception() + + +def isFileDifferent(filepath, expected): + try: + return "".join(io.open(filepath, "rt", newline="").readlines()) != expected + except BaseException: + return True + + +def get_filepaths_from_params(filepath_params, replace): + filepaths = [] + if not filepath_params or (len(filepath_params) == 1 and filepath_params[0] == "-"): + # default to stdin + filepath_params = [] + filepaths.append("-") + + for filepath_param in filepath_params: + # ignore stdin setting if files are specified + if "-" == filepath_param: + continue + + # Check if each literal filepath exists + if os.path.isfile(filepath_param): + filepaths.append(filepath_param) + elif "*" in filepath_param or "?" in filepath_param: + # handle globs + # empty result is okay + if sys.version_info.major == 2 or ( + sys.version_info.major == 3 and sys.version_info.minor <= 4 + ): + if "**" in filepath_param: + raise Exception("Recursive globs not supported on Python <= 3.4.") + filepaths.extend(glob.glob(filepath_param)) + else: + filepaths.extend(glob.glob(filepath_param, recursive=True)) + else: + # not a glob and not a file + raise OSError(errno.ENOENT, os.strerror(errno.ENOENT), filepath_param) + + if len(filepaths) > 1: + replace = True + elif filepaths and filepaths[0] == "-": + replace = False + + # remove duplicates + filepaths = set(filepaths) + + return filepaths, replace + + +def integrate_editorconfig_options(filepath, local_options, outfile, default_file_type): + # Editorconfig used only on files, not stdin + if getattr(local_options, "editorconfig"): + editorconfig_filepath = filepath + + if editorconfig_filepath == "-": + if outfile != "stdout": + editorconfig_filepath = outfile + else: + fileType = default_file_type + editorconfig_filepath = "stdin." + fileType + + # debug("EditorConfig is enabled for ", editorconfig_filepath); + local_options = copy.copy(local_options) + set_file_editorconfig_opts(editorconfig_filepath, local_options) + + return local_options + + +def write_beautified_output(pretty, local_options, outfile): + if outfile == "stdout": + stream = sys.stdout + + # python automatically converts newlines in text to "\r\n" when on windows + # switch to binary to prevent this + if platform.platform().lower().startswith("windows"): + if sys.version_info.major >= 3: + # for python 3 on windows this prevents conversion + stream = io.TextIOWrapper(sys.stdout.buffer, newline="") + elif platform.architecture()[0] == "32bit": + # for python 2 x86 on windows this prevents conversion + import msvcrt + + msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY) + else: + raise Exception( + "Pipe to stdout not supported on Windows with Python 2.x 64-bit." + ) + + stream.write(pretty) + else: + if isFileDifferent(outfile, pretty): + mkdir_p(os.path.dirname(outfile)) + + # python automatically converts newlines in text to "\r\n" when on windows + # set newline to empty to prevent this + with io.open(outfile, "wt", newline="", encoding="UTF-8") as f: + if not local_options.keep_quiet: + print("beautified " + outfile, file=sys.stdout) + + try: + f.write(pretty) + except TypeError: + # This is not pretty, but given how we did the version import + # it is the only way to do this without having setup.py + # fail on a missing six dependency. + six = __import__("six") + f.write(six.u(pretty)) + elif not local_options.keep_quiet: + print("beautified " + outfile + " - unchanged", file=sys.stdout) diff --git a/venv/lib/python3.11/site-packages/jsbeautifier/cli/__pycache__/__init__.cpython-311.pyc b/venv/lib/python3.11/site-packages/jsbeautifier/cli/__pycache__/__init__.cpython-311.pyc Binary files differnew file mode 100644 index 0000000..bf6c138 --- /dev/null +++ b/venv/lib/python3.11/site-packages/jsbeautifier/cli/__pycache__/__init__.cpython-311.pyc |