File Coverage

blib/lib/Ark/View/TT.pm
Criterion Covered Total %
statement 21 21 100.0
branch 1 2 50.0
condition 4 6 66.6
subroutine 6 6 100.0
pod 0 3 0.0
total 32 38 84.2


line stmt bran cond sub pod time code
1             package Ark::View::TT;
2 1     1   450 use strict;
  1         2  
  1         23  
3 1     1   5 use warnings;
  1         2  
  1         23  
4 1     1   4 use Ark 'View';
  1         2  
  1         6  
5              
6             has include_path => (
7             is => 'rw',
8             isa => 'ArrayRef',
9             lazy => 1,
10             default => sub {
11             my $self = shift;
12             [$self->path_to('root')];
13             },
14             );
15              
16             has extension => (
17             is => 'rw',
18             isa => 'Str',
19             default => '.tt',
20             );
21              
22             has options => (
23             is => 'rw',
24             isa => 'HashRef',
25             lazy => 1,
26             default => sub { {} },
27             );
28              
29             has tt => (
30             is => 'rw',
31             isa => 'Template',
32             lazy => 1,
33             default => sub {
34             my $self = shift;
35             my $c = sub { $self->context };
36             my $stash = sub { $self->context->stash };
37              
38             $self->ensure_class_loaded('Template');
39             Template->new(
40             INCLUDE_PATH => $self->include_path,
41             ENCODING => 'utf8',
42             %{ $self->options }
43             );
44             },
45             );
46              
47             sub template {
48 1     1 0 3 my ($self, $template) = @_;
49 1         5 $self->context->stash->{__view_tt_template} = $template;
50 1         3 $self;
51             }
52              
53             sub render {
54 4     4 0 77 my $self = shift;
55 4         5 my $template = shift;
56 4         36 my $context = $self->context;
57              
58 4 50 66     86 $template ||= $self->context->stash->{__view_tt_template}
      66        
59             || $self->context->request->action->reverse
60             or return;
61              
62 4         25092 $self->tt->process(
63             $template . $self->extension,
64             {
65 4         108 %{ $context->stash },
66             c => $self->context,
67             @_,
68             },
69             \my $output,
70             );
71              
72 4         37480 $output;
73             }
74              
75             sub process {
76 3     3 0 5 my ($self, $c) = @_;
77 3         20 $c->response->body( $self->render );
78             }
79              
80             __PACKAGE__->meta->make_immutable;