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

use t::lib::TTSimple;
use t::lib::Util;
use Text::Xslate::Util qw(p);
#use Template;
#my $t = Template->new(
#    INCLUDE_PATH => [path],
#    ANYCASE      => 1,
#
#    PRE_PROCESS  => ['header1.tt', 'header2.tt'],
#    POST_PROCESS => ['footer1.tt', 'footer2.tt'],
#);
#
#my $out;
#$t->process(\<<'T', {lang => "Xslate"}, \$out) or die $t->error;
#Hello, [% lang %] world!
#T
#
#is $out, <<'X';
#header1
#header2
#Hello, Xslate world!
#footer1
#footer2
#X

#use Template;
#my $t = Template->new(
#    INCLUDE_PATH => [path],
#    ANYCASE      => 1,
#
#    WRAPPER      => ['wrapper1.tt', 'wrapper2.tt'],
#);
#
#my $out;
#$t->process(\<<'T', {lang => "Xslate"}, \$out) or die $t->error;
#Hello, [% lang %] world!
#T
#is $out, <<'X';
#<div class="wrapper1">
#<div class="wrapper2">
#Hello, Xslate world!
#</div>
#</div>
#X
my $t = Text::Xslate->new(
    syntax => 'TTerse',
    path   => path,
    cache  => 0,
    header => ['header1.tt', 'header2.tt'],
    footer => ['footer1.tt', 'footer2.tt'],
);
my $out = $t->render_string(<<'T', { lang => "Xslate" });
Hello, [% lang %] world!
T

is $out, <<'X';
header1
header2
Hello, Xslate world!
footer1
footer2
X

$t = Text::Xslate->new(
    syntax => 'TTerse',
    path   => path,
    cache  => 0,
    header => ['config.tt', 'header1.tt'],
    footer => ['footer1.tt'],
);
$out = $t->render_string(<<'T');
Hello, [% lang %] world!
T

is $out, <<'X', 'header x 2 and footer x 2';
header1
Hello, TTerse world!
footer1
X

$out = $t->render_string(<<'T', { lang => 'Xslate' });
Hello, [% lang %] world!
T

is $out, <<'X';
header1
Hello, Xslate world!
footer1
X

$out = $t->render('hello.tt', { lang => 'Xslate' });

is $out, <<'X';
header1
Hello, Xslate world!
footer1
X

$out = $t->render_string(<<'T', { lang => 'Xslate' });
Hello, [% em(lang) %] world!
T

is $out, <<'X', 'call macros in header';
header1
Hello, <em>Xslate</em> world!
footer1
X

my %vpath = (
    wrap_begin => '[% WRAPPER "base" %]',
    wrap_end   => '[% END %]',
    base       => 'Hello, [% content %] world!',
    content    => 'Xslate',
);

my $tx = Text::Xslate->new(
    syntax => 'TTerse',
    path   => \%vpath,
    header => ['wrap_begin'],
    footer => ['wrap_end'],
);

is $tx->render('content'), 'Hello, Xslate world!';

done_testing;