mirror of https://github.com/zulip/zulip.git
Check Django block tags in check-templates.
(imported from commit a5d6336eeba63df365d3e59dce4d7f32aae637c7)
This commit is contained in:
parent
5d0abd6f3f
commit
f4764e58c6
|
@ -99,11 +99,38 @@ def validate(fn, check_indent=True):
|
|||
advance(len(s))
|
||||
continue
|
||||
|
||||
# Django tags
|
||||
if looking_at("{% ") and not looking_at("{% end"):
|
||||
s = get_django_tag(text, state.i)
|
||||
tag = s[3:-2].split()[0]
|
||||
if is_django_block_tag(tag):
|
||||
start_tag_matcher(s, tag)
|
||||
advance(len(s))
|
||||
continue
|
||||
|
||||
if looking_at("{% end"):
|
||||
s = get_django_tag(text, state.i)
|
||||
end_tag = s[6:-3]
|
||||
state.matcher(end_tag)
|
||||
advance(len(s))
|
||||
continue
|
||||
|
||||
advance(1)
|
||||
|
||||
if state.depth != 0:
|
||||
return state.matcher("(NO TAG)")
|
||||
|
||||
def is_django_block_tag(tag):
|
||||
return tag in [
|
||||
'autoescape',
|
||||
'block',
|
||||
'comment',
|
||||
'for',
|
||||
'if',
|
||||
'ifequal',
|
||||
'verbatim',
|
||||
]
|
||||
|
||||
def get_handlebars_tag(text, i):
|
||||
end = i + 2
|
||||
while end < len(text) -1 and text[end] != '}':
|
||||
|
@ -113,6 +140,15 @@ def get_handlebars_tag(text, i):
|
|||
s = text[i:end+2]
|
||||
return s
|
||||
|
||||
def get_django_tag(text, i):
|
||||
end = i + 2
|
||||
while end < len(text) -1 and text[end] != '%':
|
||||
end += 1
|
||||
if text[end] != '%' or text[end+1] != '}':
|
||||
raise Exception('Tag missing %}')
|
||||
s = text[i:end+2]
|
||||
return s
|
||||
|
||||
def get_html_tag(text, i):
|
||||
end = i + 1
|
||||
while end < len(text) and text[end] != '>':
|
||||
|
|
Loading…
Reference in New Issue