From: Kevin Date: Sun, 10 May 2020 17:59:23 +0000 (-0400) Subject: Parse isolated set blocks X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=807b6effbceddba0dccf9aecb93b4c6ee30210be;p=thirdparty%2Fjinja.git Parse isolated set blocks This adds support for set blocks where a key-value pair is being sent in so there is no matching pair of statement. --- diff --git a/new_parser.py b/new_parser.py index 1dbd839d..a8d50712 100644 --- a/new_parser.py +++ b/new_parser.py @@ -34,6 +34,9 @@ def parse_block(ast): if block_name == 'from': return parse_block_from(ast) + if block_name == 'set': + return parse_block_set(ast) + return None def parse_block_pair(ast): @@ -117,6 +120,22 @@ def parse_block_if(ast): lineno=lineno_from_parseinfo(ast['parseinfo']) ) +def parse_block_set(ast): + if 'block' in ast: + assignment = ast['block']['parameters'][0] + + if isinstance(assignment['key'], str): + key = assignment['key'] + else: + key = parse_variable(assignment['key'], variable_context="store") + + return nodes.Assign( + key, + parse_variable(assignment['value']), + lineno=lineno_from_parseinfo(ast['parseinfo']) + ) + return None + def parse_block_with(ast): with_node = nodes.With( lineno=lineno_from_parseinfo(ast['parseinfo'])