我们从Python开源项目中,提取了以下50个代码示例,用于说明如何使用jinja2.nodes.CallBlock()。
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)
def parse(self, parser): lineno = next(parser.stream).lineno args = [parser.parse_expression()] # ??????,?? timeout if parser.stream.skip_if('comma'): args.append(parser.parse_expression()) else: args.append(nodes.Const('%s%s' % (parser.filename, lineno))) vary_on = [] while parser.stream.skip_if('comma'): vary_on.append(parser.parse_expression()) if vary_on: args.append(nodes.List(vary_on)) else: args.append(nodes.Const([])) body = parser.parse_statements(['name:endcache'], drop_needle=True) return nodes.CallBlock(self.call_method('_cache', args), [], [], body).set_lineno(lineno)
def parse(self, parser): token = next(parser.stream) lineno = token.lineno filename = parser.name error = parser.parse_expression() args = [error, nodes.Const(filename), nodes.Const(lineno)] try: body = parser.parse_statements(["name:endtry"], drop_needle=True) node = nodes.CallBlock(self.call_method("_handle_body", args), [], [], body).set_lineno(lineno) except Exception as e: # that was expected self._logger.exception("Caught exception while parsing template") node = nodes.CallBlock(self.call_method("_handle_error", [nodes.Const(self._format_error(error, e, filename, lineno))]), [], [], []).set_lineno(lineno) return node
def parse_call_block(self): node = nodes.CallBlock(lineno=next(self.stream).lineno) if self.stream.current.type == 'lparen': self.parse_signature(node) else: node.args = [] node.defaults = [] node.call = self.parse_expression() if not isinstance(node.call, nodes.Call): self.fail('expected call', node.lineno) node.body = self.parse_statements(('name:endcall',), drop_needle=True) return node
def parse(self, parser): lineno = next(parser.stream).lineno #: Parse timeout args = [parser.parse_expression()] #: Parse fragment name #: Grab the fragment name if it exists #: otherwise, default to the old method of using the templates #: lineno to maintain backwards compatibility. if parser.stream.skip_if('comma'): args.append(parser.parse_expression()) else: args.append(nodes.Const("%s%s" % (parser.filename, lineno))) #: Parse vary_on parameters vary_on = [] while parser.stream.skip_if('comma'): vary_on.append(parser.parse_expression()) if vary_on: args.append(nodes.List(vary_on)) else: args.append(nodes.Const([])) body = parser.parse_statements(['name:endcache'], drop_needle=True) return nodes.CallBlock(self.call_method('_cache', args), [], [], body).set_lineno(lineno)
def parse(self, parser): lineno = parser.stream.next().lineno body = parser.parse_statements(['name:endautopep8'], drop_needle=True) args = [] result = nodes.CallBlock(self.call_method('_format_support', args), [], [], body).set_lineno(lineno) return result
def parse(self, parser): lineno = parser.stream.next().lineno # Retrieves instance args = [parser.parse_expression()] body = parser.parse_statements(['name:endhandleinstance'], drop_needle=True) result = nodes.CallBlock(self.call_method('_handle', args), [], [], body).set_lineno(lineno) return result