Compatibility with standard liquid
You may checkout the documentation for standard liquid: - https://shopify.github.io/liquid/
liquidpy
tries to maintain the maximum compatibility with liquid
. But we do have some differences:
Filter round()
It always returns a float
rather than an integer
when ndigits=0
Logical operators
The logical operators and
/or
collapse from left to right (it's right to left in liquid
)
See: https://shopify.github.io/liquid/basics/operators/#order-of-operations
Truthy and falsy
Instead of always truthy for empty string, 0, empty array, they are falsy in liquidpy
Iteration
Literal ranges ((1..5)
) are suported by liquidpy
. However, the start and the stop must be integers or names, meaning this is not supported (1..array.size)
. You can do this instead:
{% assign asize = array.size %}
{% for i in (1..asize) %}
...
{% endfor %}
Typecasting
You are able to do the following in ruby liquid:
{{ "1" | plus: 1}} # 2
So you have to do typecasting yourself:
{{ "1" | int | plus: 1 }} # 2
In order to make it work, extra filters int
, float
, str
and bool
are added as builtin filters. They are also added as globals in order to get this work:
{% capture lst_size %}4{% endcapture %}
{{ 2 | at_most: int(lst_size) }} # 2