diff --git a/bin/index.js b/bin/index.js index 4af486a..0efe2ca 100644 --- a/bin/index.js +++ b/bin/index.js @@ -127,6 +127,16 @@ function run(stdin) { describe: 'Use .gitignore file to extend excludes.', type: 'boolean', demandOption: false, + }) + .option('format-css', { + describe: 'Also format contents of )", + re.IGNORECASE | re.DOTALL, + ), + func, + html, + ) diff --git a/src/djlint/formatter/js.py b/src/djlint/formatter/js.py new file mode 100644 index 0000000..ef410be --- /dev/null +++ b/src/djlint/formatter/js.py @@ -0,0 +1,39 @@ +"""djLint function to call jsbeautify.""" +from functools import partial + +import jsbeautifier +import regex as re +from jsbeautifier.javascript.options import BeautifierOptions + +from ..settings import Config + + +def format_js(html: str, config: Config) -> str: + """Format javascript inside )", + re.IGNORECASE | re.DOTALL, + ), + func, + html, + ) diff --git a/src/djlint/reformat.py b/src/djlint/reformat.py index 3dcab56..c27f778 100644 --- a/src/djlint/reformat.py +++ b/src/djlint/reformat.py @@ -8,8 +8,10 @@ from pathlib import Path from .formatter.compress import compress_html from .formatter.condense import condense_html +from .formatter.css import format_css from .formatter.expand import expand_html from .formatter.indent import indent_html +from .formatter.js import format_js from .settings import Config @@ -23,9 +25,13 @@ def reformat_file(config: Config, this_file: Path) -> dict: condensed = condense_html(expanded, config) - indented = indent_html(condensed, config) + beautified_code = indent_html(condensed, config) - beautified_code = indented + if config.format_css: + beautified_code = format_css(beautified_code, config) + + if config.format_js: + beautified_code = format_js(beautified_code, config) if config.check is not True: # update the file diff --git a/src/djlint/settings.py b/src/djlint/settings.py index 769e6a9..1f08069 100644 --- a/src/djlint/settings.py +++ b/src/djlint/settings.py @@ -193,6 +193,8 @@ class Config: warn: bool = False, preserve_leading_space: bool = False, preserve_blank_lines: bool = False, + format_css: bool = False, + format_js: bool = False, ): self.reformat = reformat @@ -239,6 +241,13 @@ class Config: "preserve_blank_lines", False ) + self.format_js: bool = format_js or djlint_settings.get("format_js", False) + + self.js_config = djlint_settings.get("js") + self.css_config = djlint_settings.get("css") + + self.format_css: bool = format_css or djlint_settings.get("format_css", False) + # ignore is based on input and also profile self.ignore: str = str(ignore or djlint_settings.get("ignore", "")) diff --git a/tests/test_config/test_scripts_styles/__init__.py b/tests/test_config/test_scripts_styles/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/test_config/test_scripts_styles/html.html b/tests/test_config/test_scripts_styles/html.html new file mode 100644 index 0000000..12f6a71 --- /dev/null +++ b/tests/test_config/test_scripts_styles/html.html @@ -0,0 +1,17 @@ +