def parse(self, parser):
# the first token is the token that started the tag. In our case
# we only listen to ``'webpack'`` so this will be a name token with
# `webpack` as value. We get the line number so that we can give
# that line number to the nodes we create by hand.
lineno = six.next(parser.stream).lineno
ctx_ref = nodes.ContextReference()
# Parse a single expression that is the 'bundle' or 'config:bundle'
args = [ctx_ref, parser.parse_expression()]
# if there is a comma, the user provided an 'extensions' arg
if parser.stream.skip_if('comma'):
args.append(parser.parse_expression())
else:
args.append(nodes.Const(None))
# now we parse the body of the cache block up to `endwebpack` and
# drop the needle (which would always be `endwebpack` in that case)
body = parser.parse_statements(['name:endwebpack'], drop_needle=True)
call_args = [nodes.Name('ASSET', 'param')]
return nodes.CallBlock(self.call_method('_get_graph', args), call_args,
[], body).set_lineno(lineno)
评论列表
文章目录