summaryrefslogtreecommitdiff
path: root/src/jinja2/new_parser.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/jinja2/new_parser.py')
-rw-r--r--src/jinja2/new_parser.py23
1 files changed, 22 insertions, 1 deletions
diff --git a/src/jinja2/new_parser.py b/src/jinja2/new_parser.py
index 5ef1a43..5503d1e 100644
--- a/src/jinja2/new_parser.py
+++ b/src/jinja2/new_parser.py
@@ -449,6 +449,9 @@ def parse_conditional_expression(ast):
if 'logical_operator' in ast:
return parse_conditional_expression_logical(ast)
+ if 'math_operator' in ast:
+ return parse_conditional_expression_math(ast)
+
if 'not' in ast:
return parse_conditional_expression_not(ast)
@@ -492,6 +495,24 @@ def parse_conditional_expression_logical(ast):
lineno=lineno_from_parseinfo(ast['parseinfo'])
)
+def parse_conditional_expression_math(ast):
+ node_class_map = {
+ '+': nodes.Add,
+ '-': nodes.Sub,
+ '*': nodes.Mul,
+ '/': nodes.Div,
+ '//': nodes.FloorDiv,
+ '%': nodes.Mod,
+ }
+
+ node_class = node_class_map[ast['math_operator']]
+
+ return node_class(
+ parse_conditional_expression(ast['left']),
+ parse_conditional_expression(ast['right']),
+ lineno=lineno_from_parseinfo(ast['parseinfo'])
+ )
+
def parse_conditional_expression_not(ast):
return nodes.Not(
parse_conditional_expression(ast['not']),
@@ -542,7 +563,7 @@ def parse_conditional_expression_test(ast):
if ast['test_function_parameter']:
args = [
- parse_variable(ast['test_function_parameter'])
+ parse_conditional_expression(ast['test_function_parameter'])
]
test_node = nodes.Test(