diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/jinja2/new_parser.py | 23 |
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(
|