diff --git a/djhtml/modes.py b/djhtml/modes.py index 358618d..d512680 100644 --- a/djhtml/modes.py +++ b/djhtml/modes.py @@ -286,10 +286,21 @@ def create_token(self, raw_token, src, line): mode = self if raw_token == "<": - if tag := re.match(r"([\w\-\.:]+)", src): - token, mode = Token.Text(raw_token, mode=DjHTML), InsideHTMLTag( - tag[1], line, self + if match := re.match(r"([\w\-\.:]+)(\s*)", src): + tagname = match[1] + following_spaces = match[2] + absolute = True + token = Token.Text(raw_token, mode=DjHTML) + offsets = dict( + relative=-1 if line.indents else 0, + absolute=len(line) + len(tagname) + 2, ) + if "\n" in following_spaces: + # Use "relative" multi-line indendation instead + absolute = False + token.indents = True + offsets = dict(relative=0, absolute=0) + mode = InsideHTMLTag(tagname, line, self, absolute, offsets) else: token = Token.Text(raw_token, mode=DjHTML) elif raw_token == " text
text
@@ -227,8 +227,8 @@

Title

text + id="2" href="" + class="button"> text Title text text @@ -306,11 +306,11 @@

Title