diff --git a/djhtml/modes.py b/djhtml/modes.py
index 56b57e9..60437fe 100644
--- a/djhtml/modes.py
+++ b/djhtml/modes.py
@@ -451,8 +451,6 @@ def __init__(
self.haskell_re = re.compile(r"^ *, ([$\w-]+ *=|[$\w-]+;?)")
self.variable_re = re.compile(r"^ *([$\w-]+ *=|[$\w-]+;?)")
self.previous_line_ended_with_comma = False
- self.extra_blocks = {}
- self.extra_middle_tags = []
def create_token(
self, raw_token: str, src: str, line: Line
@@ -638,11 +636,15 @@ def create_token(
token, mode = Token.Text(raw_token, mode=DjHTML), self.return_mode
elif self.tagname == "style":
token, mode = Token.Open(raw_token, mode=DjHTML), DjCSS(
- return_mode=self.return_mode
+ return_mode=self.return_mode,
+ extra_blocks=self.return_mode.extra_blocks,
+ extra_middle_tags=self.return_mode.extra_middle_tags,
)
elif self.tagname == "script":
token, mode = Token.Open(raw_token, mode=DjHTML), DjJS(
- return_mode=self.return_mode
+ return_mode=self.return_mode,
+ extra_blocks=self.return_mode.extra_blocks,
+ extra_middle_tags=self.return_mode.extra_middle_tags,
)
else:
token, mode = (
diff --git a/tests/generate_tokens.py b/tests/generate_tokens.py
index cf87c04..d5797d3 100755
--- a/tests/generate_tokens.py
+++ b/tests/generate_tokens.py
@@ -14,5 +14,9 @@
with open(DIR / filename) as html:
with open(DIR / (filename.stem + ".tokens"), "w") as f:
f.write(
- DjHTML(html.read(), extra_blocks={"weird_tag": "endweird"}).debug()
+ DjHTML(
+ html.read(),
+ extra_blocks={"weird_tag": "endweird"},
+ extra_middle_tags=["weird_middle"],
+ ).debug()
)
diff --git a/tests/suite/js.html b/tests/suite/js.html
index c8f0c6a..503c55b 100644
--- a/tests/suite/js.html
+++ b/tests/suite/js.html
@@ -461,3 +461,21 @@
/function() {/
return
+
+
+
+
diff --git a/tests/suite/js.tokens b/tests/suite/js.tokens
index 783a19d..49f5517 100644
--- a/tests/suite/js.tokens
+++ b/tests/suite/js.tokens
@@ -452,4 +452,22 @@ Line([Text(' ', mode=DjJS), Text('// The following is no longer broken \\o/',
Line([Text(' ', mode=DjJS), Text('/function() {/', mode=DjJS)], level=1)
Line([Text(' return', mode=DjJS)], level=1)
Line([Close('', mode=DjHTML)])
+Line([])
+Line([])
+Line([Open('', mode=DjHTML, ignore=True)], ignore=True)
+Line([Text('<', mode=DjHTML), Text('script', mode=InsideHTMLTag, absolute=8), Open('>', mode=DjHTML)])
+Line([Text(' f', mode=DjJS), Open('(', mode=DjJS, level=1), Open('(', mode=DjJS, level=1), Close(')', mode=DjJS), Text(' => ', mode=DjJS), Open('{', mode=DjJS, level=1)], level=1)
+Line([Text(' ', mode=DjJS), Open('{% weird_tag %}', mode=DjTXT, level=2)], level=2)
+Line([Text(' a', mode=DjJS), Open('(', mode=DjJS, level=3), Close(')', mode=DjJS), Text(';', mode=DjJS)], level=3)
+Line([Text(' ', mode=DjJS), CloseAndOpen('{% weird_middle %}', mode=DjTXT, level=2)], level=2)
+Line([Text(' b', mode=DjJS), Open('(', mode=DjJS, level=3), Close(')', mode=DjJS), Text(';', mode=DjJS)], level=3)
+Line([Text(' ', mode=DjJS), Close('{% endweird %}', mode=DjTXT)], level=2)
+Line([Text(' ', mode=DjJS), Close('}', mode=DjJS), Close(')', mode=DjJS), Text(';', mode=DjJS)], level=1)
+Line([])
+Line([Text(' ', mode=DjJS), Open('{% if foo %}', mode=DjTXT, level=1)], level=1)
+Line([Text(' c', mode=DjJS), Open('(', mode=DjJS, level=2), Close(')', mode=DjJS), Text(';', mode=DjJS)], level=2)
+Line([Text(' ', mode=DjJS), CloseAndOpen('{% else %}', mode=DjTXT, level=1)], level=1)
+Line([Text(' d', mode=DjJS), Open('(', mode=DjJS, level=2), Close(')', mode=DjJS), Text(';', mode=DjJS)], level=2)
+Line([Text(' ', mode=DjJS), Close('{% endif %}', mode=DjTXT)], level=1)
+Line([Close('', mode=DjHTML)])
Line([])
\ No newline at end of file