template_parser: Handle handlebar partial blocks.

This commit is contained in:
evykassirer
2022-08-27 22:38:33 -07:00
committed by Tim Abbott
parent 8848359887
commit 606258e75b
2 changed files with 30 additions and 1 deletions

View File

@@ -75,6 +75,9 @@ def tokenize(text: str) -> List[Token]:
def looking_at_handlebars_partial() -> bool:
return looking_at("{{>")
def looking_at_handlebars_partial_block() -> bool:
return looking_at("{{#>")
def looking_at_html_start() -> bool:
return looking_at("<") and not looking_at("</")
@@ -140,6 +143,10 @@ def tokenize(text: str) -> List[Token]:
s = get_handlebars_partial(text, state.i)
tag = s[9:-2]
kind = "handlebars_partial"
elif looking_at_handlebars_partial_block():
s = get_handlebars_partial(text, state.i)
tag = s[5:-2]
kind = "handlebars_partial_block"
elif looking_at_html_start():
s = get_html_tag(text, state.i)
if s.endswith("/>"):
@@ -311,7 +318,7 @@ def tag_flavor(token: Token) -> Optional[str]:
):
return None
if kind in ("handlebars_start", "html_start"):
if kind in ("handlebars_start", "handlebars_partial_block", "html_start"):
return "start"
elif kind in (
"django_else",
@@ -726,6 +733,7 @@ def get_django_comment(text: str, i: int) -> str:
def get_handlebars_partial(text: str, i: int) -> str:
"""Works for both partials and partial blocks."""
end = i + 10
unclosed_end = 0
while end <= len(text):