"""Djlint reformat html files.
Much code is borrowed from https://github.com/rareyman/HTMLBeautify, many thanks!
"""
import difflib
from pathlib import Path
from .formatter.compress import compress_html
from .formatter.condense import condense_html
from .formatter.expand import expand_html
from .formatter.indent import indent_html
from .settings import Config
def reformat_file(config: Config, this_file: Path) -> dict:
"""Reformat html file."""
rawcode = this_file.read_text(encoding="utf8")
comporessed = compress_html(rawcode, config)
expanded = expand_html(comporessed, config)
condensed = condense_html(expanded, config)
indented = indent_html(condensed, config)
beautified_code = indented
if config.check is not True:
# update the file
this_file.write_text(beautified_code, encoding="utf8")
out = {
this_file: list(
difflib.unified_diff(rawcode.splitlines(), beautified_code.splitlines())
)
}
return out