Support negative integers in the slice filter
#1867
benjaminsehl
started this conversation in
RFCs
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
Originally posted as issue #1850
Author: Shopify
Expected end date: December 5, 2024
Background
Today, the
slicefilter is limited to counting items from the start index, with no option to count backwards from the end. This creates unnecessary toil, affecting the developer experience, as seen in the following examples.It's straightforward counting from the index:
{% assign fruits = 'apple, banana, cherry, tomato, fig' | split: ", " %} {{ fruits | slice: 1, 3 }} {% # => [ "banana", "cherry", "tomato" ] %}However, operations such as getting all array elements except the last two can become verbose:
{% assign end_index = fruits.size | minus: 2 %} {{ fruits | slice: 0, end_index }} {% # => [ "apple", "banana", "cherry" ] %}Proposal
Inspired by
sliceoperations in other languages, we propose supporting negative numbers in the second argument, making operations more intuitive by controlling the direction of elements being taken.With this enhancement, that example becomes simpler and clearer:
{{ fruits | slice: 0, -2 }} {% # => [ "apple", "banana", "cherry" ] %}Here's how the negative number influences the direction of the second argument:
{{ fruits | slice: 1, 3 }} {{ fruits | slice: 1, -3 }}Limitations
This proposal is not currently backward compatible:
{{ fruits | slice: 0, -2 }} {% # => [] %}Therefore, we will conduct an impact assessment to evaluate the feasibility and ensure a smooth transition if this change is implemented.
Call for suggestions
We welcome any feedback or opinions on this proposal. Please share your thoughts by December 5, 2024. Your input is valuable as we prepare to begin active development on this initiative.
Beta Was this translation helpful? Give feedback.
All reactions