#!perl -w use strict; use Test::More; use Text::Xslate; my %vpath = ( ); my $tx = Text::Xslate->new( syntax => 'TTerse', cache => 0, path => \%vpath, verbose => 2, warn_handler => sub { die @_ }, ); note 'for'; is $tx->render_string(<<'T'), <<'X' or die; %% for it in [42, 43, 44] %% last if it == 43 * [% it %] %% end T * 42 X is $tx->render_string(<<'T'), <<'X' or die; %% for it in [42, 43, 44] %% NEXT if it == 43 * [% it %] %% END T * 42 * 44 X note 'while'; my $iter = do{ my @a = (42, 43, 44); sub { shift @a } }; is $tx->render_string(<<'T', { iter => $iter }), <<'X'; %% while it = iter() %% NEXT if it == 43 * [% it %] %% END T * 42 * 44 X $iter = do{ my @a = (42, 43, 44); sub { shift @a } }; is $tx->render_string(<<'T', { iter => $iter }), <<'X'; %% while it = iter() %% LAST if it == 43 * [% it %] %% END T * 42 X $iter = do{ my @a = (42, 43, 44); sub { shift @a } }; is $tx->render_string(<<'T', { iter => $iter }), <<'X'; %% while it = iter() * [% it %] %% LAST if it == 43 %% END T * 42 * 43 X done_testing;