From: Kevin Date: Sun, 10 May 2020 16:27:20 +0000 (-0400) Subject: Support parsing `{% block %}` blocks X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=a221d0a3879dc5cf4145b2ce8ba58286f20a5fc3;p=thirdparty%2Fjinja.git Support parsing `{% block %}` blocks This does not currently parse out the scoped parameter but that will come soon enough. --- diff --git a/new_parser.py b/new_parser.py index e491d0f6..77487f8c 100644 --- a/new_parser.py +++ b/new_parser.py @@ -29,7 +29,9 @@ def parse(ast): return None def parse_block(ast): - if ast['block']['name'] == 'from': + block_name = ast['block']['name'] + + if block_name == 'from': return parse_block_from(ast) return None @@ -37,14 +39,28 @@ def parse_block(ast): def parse_block_pair(ast): block_name = ast['start']['name'] - if block_name == 'with': - return parse_block_with(ast) + if block_name == 'block': + return parse_block_block(ast) if block_name == 'for': return parse_block_for(ast) + if block_name == 'with': + return parse_block_with(ast) + return None +def parse_block_block(ast): + name = parse_variable(ast['start']['parameters'][0]['value']).name + scoped = False + + return nodes.Block( + name, + parse(ast['contents']), + scoped, + lineno=lineno_from_parseinfo(ast['parseinfo']) + ) + def parse_block_for(ast): target = None iter = None