The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package t::TestJemplate;
use Test::Base -Base;

use Jemplate;

package t::TestJemplate::Filter;
use base 'Test::Base::Filter';

sub XXX() { require YAML; die YAML::Dump(@_) }

sub parse {
    my $parser = Jemplate::Parser->new;
    my $template = $parser->parse(shift)
      or die $parser->error;
    return $template->{BLOCK};
}

sub parse_lite {
    no warnings 'redefine';
    local *Jemplate::Directive::template = sub {
        my ($class, $block) = @_;
        chomp($block);
        return "$block\n";
    };
    return $self->parse(@_);
}

sub compile {
    return Jemplate->compile_template_content(shift, 'test_template');
}

sub compile_lite {
    my $result = $self->compile(@_);
    $result =~ s/^Jemplate\.templateMap.*?    try \{\n//gsm;
    $result =~ s/^\s+\}\s+catch\(e\) \{\n.*?\n\}\n//gsm;
    $result =~ s/\n+\z/\n/;
    return $result;
}

sub X_line_numbers {
    my $js = shift;
    $js =~ s!^//line \d+!//line X!gm;
    return $js;
}