File Coverage

blib/lib/App/Rad/Plugin/TT.pm
Criterion Covered Total %
statement 3 43 6.9
branch 0 12 0.0
condition 0 14 0.0
subroutine 1 9 11.1
pod 5 5 100.0
total 9 83 10.8


line stmt bran cond sub pod time code
1             package App::Rad::Plugin::TT;
2              
3             our $VERSION = "0.2";
4              
5 1     1   34836 use Template;
  1         43219  
  1         567  
6              
7             sub _default_obj {
8 0     0     my $c = shift;
9              
10 0   0       Template->new(
      0        
11             INCLUDE_PATH => $c->stash->{tt_include_path} || "." ,
12             TEMPLATE_EXTENSION => $c->{tt_extension} || ".tt2",
13             );
14             }
15              
16             sub tt_config {
17 0     0 1   my $c = shift;
18 0           my $config = shift;
19              
20 0 0         $c->{'_tt_controler'} = delete $config->{CONTROLLER_VAR} if exists $config->{CONTROLLER_VAR};
21 0           $c->{'_tt_config'} = $config;
22 0           $c->{'_tt_obj'} = Template->new(%$config);
23 0 0         $c->{'_tt_extension'} = $config->{TEMPLATE_EXTENSION} if exists $config->{TEMPLATE_EXTENSION};
24             }
25              
26             sub _template_file {
27 0     0     my $c = shift;
28              
29 0 0         if(exists $c->stash->{template}) {
30 0           return $c->stash->{template};
31             }else {
32 0   0       return $c->cmd . ($c->{'_tt_extension'} || ".tt2");
33             }
34             }
35              
36             sub process {
37 0     0 1   my $c = shift;
38              
39 0   0       $c->{'_tt_obj'} ||= _default_obj($c);
40 0           my $tt_file = _template_file($c);
41 0           my $output;
42 0 0 0       $c->{'_tt_obj'}->process($tt_file, { ($c->{'_tt_controler'} || "c") => $c, %{$c->stash} }, \$output)
  0            
43             || die $c->{'_tt_obj'}->error();
44 0           $output;
45             }
46              
47             sub process_array {
48 0     0 1   my $c = shift;
49 0           my @vars = @{shift()};
  0            
50              
51 0   0       $c->stash->{template_obj} ||= _default_obj($c);
52 0           my $tt_file = _template_file($c);
53 0           my $output;
54 0           for my $vars(@vars){
55 0           my $output_part;
56 0 0         $c->stash->{template_obj}->process($tt_file, {"c" => $c, %{$c->stash}, %$vars}, \$output_part)
  0            
57             || die $c->stash->{template_obj}->error();
58 0           $output .= $output_part;
59             }
60 0           $output;
61             }
62              
63             sub use_tt_post_process {
64 0     0 1   my $c = shift;
65              
66 0           my $old_post_process = $c->{"_old_post_process_TT"} = $c->{"_functions"}->{post_process};
67             $c->{"_functions"}
68             ->{post_process} = sub {
69 0     0     my $c = shift;
70 0 0         if($c->cmd) {
71 0           $c->output($c->process);
72             }
73 0           $old_post_process->($c);
74 0           };
75             }
76              
77             sub no_tt_post_process {
78 0     0 1   my $c = shift;
79              
80 0           $c->{"_functions"}->{post_process} = $c->{"_old_post_process_TT"};
81             }
82              
83             42;