Example #1
0
 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)
Example #2
0
 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)
Example #3
0
 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
Example #5
0
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)
Example #6
0
    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)