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), ]
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