Template::Liquid::Tag::Cycle - Document-level Persistant Lists
Often you have to alternate between different colors or similar tasks. Template::Liquid has built-in support for such operations, using the cycle tag.
cycle
{% cycle 'one', 'two', 'three' %} {% cycle 'one', 'two', 'three' %} {% cycle 'one', 'two', 'three' %} {% cycle 'one', 'two', 'three' %}
...will result in...
one two three one
If no name is supplied for the cycle group, then it’s assumed that multiple calls with the same parameters are one group.
If you want to have total control over cycle groups, you can optionally specify the name of the group. This can even be a variable.
{% cycle 'group 1': 'one', 'two', 'three' %} {% cycle 'group 1': 'one', 'two', 'three' %} {% cycle 'group 2': 'one', 'two', 'three' %} {% cycle 'group 2': 'one', 'two', 'three' %}
one two one two
The cycle tag is the only one which retains state between calls to render For a particular document. So...
use Template::Liquid; my $solution = Template::Liquid->parse(<<'TEMPLATE'); {% cycle 'group 1': 'one', 'two', 'three' %} {% cycle 'group 2': 'one', 'two', 'three' %} {% cycle 'group 1': 'one', 'two', 'three' %} TEMPLATE print $solution->render() for 1..3;
...would print...
one one two three two one two three three
...rather than...
one one two one one two one one two
...which is what would happen if the state was reset after every render.
Remember than state is held for each document so...
use Template::Liquid; my $solution_a = Template::Liquid->parse(<<'TEMPLATE'); {% cycle 'group 1': 'one', 'two', 'three' %} {% cycle 'group 2': 'one', 'two', 'three' %} {% cycle 'group 1': 'one', 'two', 'three' %} TEMPLATE my $solution_b = Template::Liquid->parse(<<'TEMPLATE'); {% cycle 'group 1': 'one', 'two', 'three' %} {% cycle 'group 2': 'one', 'two', 'three' %} {% cycle 'group 1': 'one', 'two', 'three' %} TEMPLATE my $solution_c = Template::Liquid->parse(<<'TEMPLATE'); {% cycle 'group 1': 'one', 'two', 'three' %} {% cycle 'group 2': 'one', 'two', 'three' %} {% cycle 'group 1': 'one', 'two', 'three' %} TEMPLATE print $solution_a->render(); print $solution_b->render(); print $solution_c->render();
Liquid for Designers: http://wiki.github.com/tobi/liquid/liquid-for-designers
Sanko Robinson <sanko@cpan.org> - http://sankorobinson.com/
The original Liquid template system was developed by jadedPixel (http://jadedpixel.com/) and Tobias Lütke (http://blog.leetsoft.com/).
Copyright (C) 2009-2022 by Sanko Robinson <sanko@cpan.org>
This program is free software; you can redistribute it and/or modify it under the terms of The Artistic License 2.0. See the LICENSE file included with this distribution or http://www.perlfoundation.org/artistic_license_2_0. For clarification, see http://www.perlfoundation.org/artistic_2_0_notes.
When separated from the distribution, all original POD documentation is covered by the Creative Commons Attribution-Share Alike 3.0 License. See http://creativecommons.org/licenses/by-sa/3.0/us/legalcode. For clarification, see http://creativecommons.org/licenses/by-sa/3.0/us/.
To install Template::Liquid, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Template::Liquid
CPAN shell
perl -MCPAN -e shell install Template::Liquid
For more information on module installation, please visit the detailed CPAN module installation guide.