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 Text::Xslate::Syntax::TTerse;
use Text::Xslate::Util qw(p);

my $parser = Text::Xslate::Syntax::TTerse->new();

my @data = (
    ['Hello, world!' => qr/Hello, world!/],
    ['Hello, [% lang %] world!' => qr/Hello/, qr/\b lang \b/xms, qr/world/],
    ['Hello, [% foo %] world!'  => qr/\b foo \b/xms],
    ['Hello, [% lang %] [% foo %] world!', qr/\b lang \b/xms, qr/\b foo \b/xms],

    [<<'T', qr/\b foo \b/xms, qr/\b if \b/xms],
[% IF foo %]
    This is true
[% END %]
T
    [<<'T', qr/\b foo \b/xms, qr/\b if \b/xms],
[% IF foo %]
    This is true
[% ELSE %]
    This is false
[% END %]
T

    [<<'T', qr/\b item \b/xms, qr/\b foo \b/xms, qr/\b for \b/xms],
[% FOREACH item IN foo %]
    This is true
[% END %]
T

);

foreach my $d(@data) {
    my($str, @patterns) = @{$d};

    #note($str);
    my $code = p($parser->parse($str));
    #note($code);

    foreach my $pat(@patterns) {
        like $code, $pat;
    }
}

done_testing;