Пример #1
0
def decrement(token: "Token", parser: "Parser") -> List[nodes.Node]:
    """The decrement tag {% decrement x %}

    Args:
        token: The token matches tag name
        parser: The parser

    Returns:
        The parsed node
    """
    variable = parser.stream.expect("name")
    varname = f"_liquid_xcrement_{variable.value}"
    varnode = nodes.Name(varname, "load")

    return [
        nodes.Assign(
            nodes.Name(varname, "store"),
            nodes.CondExpr(
                nodes.Test(varnode, "defined", [], [], None, None),
                nodes.Sub(varnode, nodes.Const(1)),
                nodes.Const(-1),
            ),
            lineno=token.lineno,
        ),
        nodes.Output([varnode], lineno=token.lineno),
    ]
Пример #2
0
 def parse_sub(self):
     lineno = self.stream.current.lineno
     left = self.parse_concat()
     while self.stream.current.type == 'sub':
         next(self.stream)
         right = self.parse_concat()
         left = nodes.Sub(left, right, lineno=lineno)
         lineno = self.stream.current.lineno
     return left