mirror of
https://github.com/zulip/zulip.git
synced 2025-11-09 16:37:23 +00:00
refactor: Extract tag_flavor().
This commit is contained in:
@@ -269,6 +269,49 @@ HTML_INLINE_TAGS = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def tag_flavor(token: Token) -> Optional[str]:
|
||||||
|
kind = token.kind
|
||||||
|
tag = token.tag
|
||||||
|
if kind in (
|
||||||
|
"django_comment",
|
||||||
|
"handlebar_comment",
|
||||||
|
"handlebars_singleton",
|
||||||
|
"html_comment",
|
||||||
|
"html_doctype",
|
||||||
|
"html_singleton",
|
||||||
|
"indent",
|
||||||
|
"newline",
|
||||||
|
"template_var",
|
||||||
|
"text",
|
||||||
|
"whitespace",
|
||||||
|
):
|
||||||
|
return None
|
||||||
|
|
||||||
|
if kind in ("handlebars_start", "html_start"):
|
||||||
|
return "start"
|
||||||
|
elif kind in (
|
||||||
|
"django_else",
|
||||||
|
"django_end",
|
||||||
|
"handlebars_else",
|
||||||
|
"handlebars_end",
|
||||||
|
"html_end",
|
||||||
|
"jinja2_whitespace_stripped_end",
|
||||||
|
):
|
||||||
|
return "end"
|
||||||
|
elif kind in {
|
||||||
|
"django_start",
|
||||||
|
"django_else",
|
||||||
|
"jinja2_whitespace_stripped_start",
|
||||||
|
"jinja2_whitespace_stripped_type2_start",
|
||||||
|
}:
|
||||||
|
if is_django_block_tag(tag):
|
||||||
|
return "start"
|
||||||
|
else:
|
||||||
|
return None
|
||||||
|
else:
|
||||||
|
raise AssertionError(f"tools programmer neglected to handle {kind} tokens")
|
||||||
|
|
||||||
|
|
||||||
def validate(fn: Optional[str] = None, text: Optional[str] = None) -> None:
|
def validate(fn: Optional[str] = None, text: Optional[str] = None) -> None:
|
||||||
assert fn or text
|
assert fn or text
|
||||||
|
|
||||||
@@ -396,46 +439,12 @@ def validate(fn: Optional[str] = None, text: Optional[str] = None) -> None:
|
|||||||
f"Tag must not be self-closing: {tag} at {fn} line {token.line}, col {token.col}"
|
f"Tag must not be self-closing: {tag} at {fn} line {token.line}, col {token.col}"
|
||||||
)
|
)
|
||||||
|
|
||||||
if kind in (
|
flavor = tag_flavor(token)
|
||||||
"django_comment",
|
if flavor == "start":
|
||||||
"handlebar_comment",
|
|
||||||
"handlebars_singleton",
|
|
||||||
"html_singleton",
|
|
||||||
"indent",
|
|
||||||
"template_var",
|
|
||||||
"html_comment",
|
|
||||||
"html_doctype",
|
|
||||||
"newline",
|
|
||||||
"text",
|
|
||||||
"whitespace",
|
|
||||||
):
|
|
||||||
continue
|
|
||||||
|
|
||||||
if kind == "html_start":
|
|
||||||
start_tag_matcher(token)
|
start_tag_matcher(token)
|
||||||
elif kind == "html_end":
|
elif flavor == "end":
|
||||||
state.matcher(token)
|
state.matcher(token)
|
||||||
|
|
||||||
elif kind == "handlebars_start":
|
|
||||||
start_tag_matcher(token)
|
|
||||||
elif kind == "handlebars_else":
|
|
||||||
state.matcher(token)
|
|
||||||
elif kind == "handlebars_end":
|
|
||||||
state.matcher(token)
|
|
||||||
|
|
||||||
elif kind in {
|
|
||||||
"django_start",
|
|
||||||
"django_else",
|
|
||||||
"jinja2_whitespace_stripped_start",
|
|
||||||
"jinja2_whitespace_stripped_type2_start",
|
|
||||||
}:
|
|
||||||
if is_django_block_tag(tag):
|
|
||||||
start_tag_matcher(token)
|
|
||||||
elif kind in {"django_else", "django_end", "jinja2_whitespace_stripped_end"}:
|
|
||||||
state.matcher(token)
|
|
||||||
else:
|
|
||||||
raise AssertionError(f"tools programmer neglected to handle {kind} tokens")
|
|
||||||
|
|
||||||
if state.depth != 0:
|
if state.depth != 0:
|
||||||
raise TemplateParserException("Missing end tag")
|
raise TemplateParserException("Missing end tag")
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user