The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!perl -w
# recursive INCLUDE broke the stack frame
use strict;
use warnings;
use Test::More;

use Text::Xslate;

my %vpath = (
    main => <<'T',
[% FOR entry IN entries -%]
    + [% entry.name %]
    [% INCLUDE 'entry' WITH entry = entry -%]
[% END -%]
T

    entry => <<'T',
[% FOR child IN entry.next -%]
    - [% child.name %]
    [% INCLUDE 'entry' WITH entry = child ; -%]
[% END -%]
T
);

my @entries = (
 {
   name => 'hoge',
   next => [
     { name => 'fuga' },
     { name => 'foobar' }
   ]
 }
);

my $tx = Text::Xslate->new( syntax => 'TTerse', cache => 0, path => \%vpath );

ok $tx->render('entry', { entry => $entries[0] });

my $s = $tx->render('main', { entries => \@entries });
note $s;
ok $s;
like $s, qr/hoge/;
like $s, qr/fuga/;
like $s, qr/foobar/;

done_testing;