mirror of
https://github.com/Hopiu/djLint.git
synced 2026-03-22 00:00:25 +00:00
fix(formatter): fix IndexError while adding indentation to attributes
solves issue with boolean attributes at the start of tags. closes #290
This commit is contained in:
parent
045de4a224
commit
a3ccc1974c
2 changed files with 66 additions and 1 deletions
|
|
@ -56,7 +56,9 @@ def format_template_tags(config: Config, attributes: str) -> str:
|
||||||
attributes.splitlines()[0].strip(),
|
attributes.splitlines()[0].strip(),
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)[-1]
|
)
|
||||||
|
if start_test:
|
||||||
|
start_test = start_test[-1]
|
||||||
|
|
||||||
base_indent = len(attr_name.group())
|
base_indent = len(attr_name.group())
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,8 @@ run::
|
||||||
--cov-report xml:coverage.xml --cov-report term-missing
|
--cov-report xml:coverage.xml --cov-report term-missing
|
||||||
|
|
||||||
pytest tests/test_html/test_attributes.py::test_long_attributes
|
pytest tests/test_html/test_attributes.py::test_long_attributes
|
||||||
|
pytest tests/test_html/test_attributes.py::test_ignored_attributes
|
||||||
|
pytest tests/test_html/test_attributes.py::test_boolean_attributes
|
||||||
|
|
||||||
|
|
||||||
Some tests may be from prettier.io's html test suite.
|
Some tests may be from prettier.io's html test suite.
|
||||||
|
|
@ -118,6 +120,67 @@ def test_ignored_attributes(runner: CliRunner, tmp_file: TextIO) -> None:
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def test_boolean_attributes(runner: CliRunner, tmp_file: TextIO) -> None:
|
||||||
|
output = reformat(
|
||||||
|
tmp_file,
|
||||||
|
runner,
|
||||||
|
b"""<select
|
||||||
|
multiple
|
||||||
|
class="selectpicker show-tick"
|
||||||
|
id="device-select"
|
||||||
|
title="">
|
||||||
|
</select>""",
|
||||||
|
)
|
||||||
|
|
||||||
|
# boolean attributes after tag must be reformatted correctly
|
||||||
|
assert output.exit_code == 1
|
||||||
|
print(output.text)
|
||||||
|
assert (
|
||||||
|
output.text
|
||||||
|
== """<select multiple class="selectpicker show-tick" id="device-select" title="">
|
||||||
|
</select>
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
|
||||||
|
# boolean attributes after tag with long attributes must be reformatted correctly
|
||||||
|
output = reformat(
|
||||||
|
tmp_file,
|
||||||
|
runner,
|
||||||
|
b"""<select
|
||||||
|
multiple
|
||||||
|
class="selectpicker show-tick"
|
||||||
|
id="device-select"
|
||||||
|
title=""
|
||||||
|
value="something pretty long goes here"
|
||||||
|
style="width:100px;cursor: text;border:1px solid pink">
|
||||||
|
</select>""",
|
||||||
|
)
|
||||||
|
assert output.exit_code == 1
|
||||||
|
print(output.text)
|
||||||
|
assert (
|
||||||
|
output.text
|
||||||
|
== """<select multiple
|
||||||
|
class="selectpicker show-tick"
|
||||||
|
id="device-select"
|
||||||
|
title=""
|
||||||
|
value="something pretty long goes here"
|
||||||
|
style="width:100px;cursor: text;border:1px solid pink">
|
||||||
|
</select>
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
|
||||||
|
# boolean attributes after tag are accepted
|
||||||
|
output = reformat(
|
||||||
|
tmp_file,
|
||||||
|
runner,
|
||||||
|
b"""<input readonly
|
||||||
|
class="form-control"
|
||||||
|
type="text"
|
||||||
|
name="driver_id"
|
||||||
|
value="{{ id|default(' sample_text ') }}"/>"""
|
||||||
|
)
|
||||||
|
assert output.exit_code == 0
|
||||||
|
|
||||||
# def test_attributes(runner: CliRunner, tmp_file: TextIO) -> None:
|
# def test_attributes(runner: CliRunner, tmp_file: TextIO) -> None:
|
||||||
|
|
||||||
# html_in = (
|
# html_in = (
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue