Skip to content
This repository has been archived by the owner on Jun 13, 2020. It is now read-only.

Commit

Permalink
handle default filters in for loops
Browse files Browse the repository at this point in the history
  • Loading branch information
Jonathan Freedman committed May 10, 2017
1 parent d42ed79 commit 83db37f
Showing 1 changed file with 13 additions and 4 deletions.
17 changes: 13 additions & 4 deletions aomi/template.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,18 @@
def grok_default_vars(parsed_content):
"""Returns a list of vars for which there is a default being set"""
default_vars = []
for node in parsed_content.body[0].nodes:
if isinstance(node, jinja2.nodes.Filter):
if node.name == 'default' and node.node.name not in default_vars:
default_vars.append(node.node.name)
for element in parsed_content.body:
if isinstance(element, jinja2.nodes.Output):
for node in element.nodes:
if isinstance(node, jinja2.nodes.Filter):
if node.name == 'default' \
and node.node.name not in default_vars:
default_vars.append(node.node.name)
elif isinstance(element, jinja2.nodes.For):
if isinstance(element.iter, jinja2.nodes.Filter):
if element.iter.name == 'default' \
and element.iter.node.name not in default_vars:
default_vars.append(element.iter.node.name)

return default_vars

Expand All @@ -34,6 +42,7 @@ def render(filename, obj):
env.filters['b64decode'] = portable_b64decode
template_src = env.loader.get_source(env, os.path.basename(template_path))
parsed_content = env.parse(template_src)

template_vars = meta.find_undeclared_variables(parsed_content)
if template_vars:
missing_vars = []
Expand Down

0 comments on commit 83db37f

Please sign in to comment.