The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package Counter::Over::Engineered::Sugar::View;
use Moose;

use MooseX::Types::Path::Class;
use Template;

has 'template_root' => (
    is       => 'ro',
    isa      => 'Path::Class::Dir',
    coerce   => 1,
    required => 1,
);

has 'tt' => (
    is      => 'ro',
    isa     => 'Template',
    lazy    => 1,
    default => sub {
        my $self = shift;
        Template->new(INCLUDE_PATH => $self->template_root)
    },
);

sub render {
    my ($self, $r, $template, $params) = @_;
    my $out;
    $self->tt->process(
        $template,
        {
            uri_for => sub { $r->uri_for( $_[0] ) },
            %{ $params || {} },
        },
        \$out
    );
    return $out;
}

no Moose; 1;

__END__