def parse(self, parser): target = next(parser.stream) end_expr = 'name:end' + target.value return nodes.AssignBlock( nodes.Name(target.value, 'store'), parser.parse_statements((end_expr,), drop_needle=True), lineno=target.lineno)
def parse_set(self): """Parse an assign statement.""" lineno = next(self.stream).lineno target = self.parse_assign_target() if self.stream.skip_if('assign'): expr = self.parse_tuple() return nodes.Assign(target, expr, lineno=lineno) body = self.parse_statements(('name:endset', ), drop_needle=True) return nodes.AssignBlock(target, body, lineno=lineno)
def parse_set(self): """Parse an assign statement.""" lineno = next(self.stream).lineno target = self.parse_assign_target(with_namespace=True) if self.stream.skip_if("assign"): expr = self.parse_tuple() return nodes.Assign(target, expr, lineno=lineno) filter_node = self.parse_filter(None) body = self.parse_statements(("name:endset", ), drop_needle=True) return nodes.AssignBlock(target, filter_node, body, lineno=lineno)
def output(self, parser, block_call, target, tag_name, lineno): body = parser.parse_statements(['name:end%s' % tag_name], drop_needle=True) call_block = nodes.CallBlock(block_call, [], [], body).set_lineno(lineno) if target: target_node = nodes.Name(target, 'store', lineno=lineno) return nodes.AssignBlock(target_node, None, [call_block], lineno=lineno) return call_block
def capture(token: "Token", parser: "Parser") -> nodes.Node: """The capture tag {% capture var %}...{% endcapture %} Args: token: The token matches tag name parser: The parser Returns: The parsed node """ target = parser.parse_assign_target(with_namespace=True) filter_node = parser.parse_filter(None) body = parser.parse_statements(("name:endcapture",), drop_needle=True) return nodes.AssignBlock(target, filter_node, body, lineno=token.lineno)
def parse(self, parser): lineno = next(parser.stream).lineno name = parser.parse_assign_target() body = parser.parse_statements(('name:endregion',), drop_needle=True); return nodes.AssignBlock(name, body, lineno=lineno)