fix(textarea): fixed textarea attribute formatting

closes #486
This commit is contained in:
Christopher Pickering 2022-12-15 10:31:59 -06:00
parent 6c2d843c2f
commit e7c904e8f0
No known key found for this signature in database
GPG key ID: E14DB3B0A0FACF84
4 changed files with 42 additions and 4 deletions

View file

@ -4,7 +4,7 @@
<a href="https://www.djlint.com"><img src="https://raw.githubusercontent.com/Riverside-Healthcare/djLint/master/docs/src/static/img/icon.png" alt="djLint Logo" width="270"></a>
<br>
</h1>
<h3 align="center">🙏 Passed 100k downloads! Thank you! 🙏</h3>
<h3 align="center">🏗️ Maintainers needed, please reach out on discord or email!</h3>
<h4 align="center">The missing formatter and linter for HTML templates.</h4>
<p align="center">

View file

@ -4,7 +4,7 @@ from functools import partial
import regex as re
from ..helpers import inside_ignored_block
from ..helpers import child_of_ignored_block
from ..settings import Config
@ -115,7 +115,7 @@ def format_attributes(config: Config, html: str, match: re.match) -> str:
"""Spread long attributes over multiple lines."""
# check that we are not inside an ignored block
if (
inside_ignored_block(config, html, match)
child_of_ignored_block(config, html, match)
or len(match.group(3).strip()) < config.max_attribute_length
):
return match.group()
@ -128,11 +128,11 @@ def format_attributes(config: Config, html: str, match: re.match) -> str:
attributes = []
print(match, match.group(3))
# format attributes as groups
for attr_grp in re.finditer(
config.attribute_pattern, match.group(3).strip(), re.VERBOSE
):
attrib_name = attr_grp.group(1)
is_quoted = attr_grp.group(2) and attr_grp.group(2)[0] in ["'", '"']
quote = attr_grp.group(2)[0] if is_quoted else '"'

View file

@ -122,6 +122,27 @@ def inside_ignored_block(config: Config, html: str, match: re.Match) -> bool:
)
)
def child_of_ignored_block(config: Config, html: str, match: re.Match) -> bool:
"""Do not add whitespace if the tag is in a non indent block."""
return any(
ignored_match.start(0) < match.start() and match.end(0) <= ignored_match.end()
for ignored_match in list(
re.finditer(
re.compile(
config.ignored_blocks,
re.DOTALL | re.IGNORECASE | re.VERBOSE | re.MULTILINE,
),
html,
)
)
+ list(
re.finditer(
re.compile(config.ignored_inline_blocks, re.IGNORECASE | re.VERBOSE),
html,
)
)
)
def overlaps_ignored_block(config: Config, html: str, match: re.Match) -> bool:
"""Do not add whitespace if the tag is in a non indent block."""

View file

@ -68,6 +68,23 @@ asdf
"""
)
output = reformat(
tmp_file,runner,b"""<div><textarea type="textarea" id="messageContent" name="adContent" maxlength="300" class="form-control class_two" rows="10">{{ adContent|default }}</textarea></div>
""")
assert (
output.text
== """<div>
<textarea type="textarea"
id="messageContent"
name="adContent"
maxlength="300"
class="form-control class_two"
rows="10">{{ adContent|default }}</textarea>
</div>
"""
)
def test_a_tag(runner: CliRunner, tmp_file: TextIO) -> None:
output = reformat(