File Coverage

blib/lib/Catalyst/View/TextForge.pm
Criterion Covered Total %
statement 13 34 38.2
branch 0 10 0.0
condition 0 6 0.0
subroutine 5 7 71.4
pod 0 1 0.0
total 18 58 31.0


line stmt bran cond sub pod time code
1             package Catalyst::View::TextForge;
2              
3 1     1   27748 use strict;
  1         2  
  1         36  
4 1     1   5 use base qw/ Catalyst::View /;
  1         2  
  1         750  
5              
6             our $VERSION = '0.02';
7              
8             BEGIN {
9             package Text::Forge::Catalyst;
10              
11 1     1   5 use strict;
  1         11  
  1         40  
12 1     1   5 use base qw/ Text::Forge /;
  1         1  
  1         1320  
13              
14 0     0     sub catalyst { $_[0]->{catalyst} }
15 1     1   95761 *c = \&catalyst;
16             }
17              
18             sub process {
19 0     0 0   my ($self, $c) = @_;
20              
21 0   0       my $path = $c->stash->{template} || $c->req->match;
22 0 0         unless ($path) {
23 0 0         $c->log->debug('No template specified') if $c->debug;
24 0           return 0;
25             }
26              
27 0 0         $c->log->debug(qq/Rendering template "$path"/) if $c->debug;
28              
29 0           my $tf = Text::Forge::Catalyst->new;
30 0   0       $tf->search_paths($self->config->{root} || $c->config->{root});
31 0           $tf->{catalyst} = $c;
32 0           eval { $tf->run($path, $c->stash, $c) };
  0            
33 0 0         if ($@) {
34 0           my $err = "Error generating template '$path': $@";
35 0           $c->log->error($err);
36 0           $c->error($err);
37 0           return 0;
38             }
39              
40 0 0         unless ($c->response->content_type) {
41 0           $c->response->content_type('text/html;charset=utf8');
42             }
43              
44 0           $c->response->body($tf->content);
45              
46 0           return 1;
47             }
48              
49             =head1 NAME
50              
51             Catalyst::View::TextForge - Text::Forge View Class
52              
53             =head1 SYNOPSIS
54              
55             # use the helper
56             script/create.pl view TextForge TextForge
57              
58             # lib/MyApp/View/TextForge.pm
59             package MyApp::View::TextForge;
60              
61             use base qw/ Catalyst::View::TextForge /;
62              
63             # Set search path for templates (default: $c->config->{root})
64             # __PACKAGE__->config->{root} = '/path/to/template/root';
65            
66             # Set cache mode (default: 1); See Text::Forge for details
67             # __PACKAGE__->config->{cache} = 2;
68              
69             1;
70              
71             =head1 DESCRIPTION
72              
73             Use Text::Forge templates as Catalyst views.
74              
75             Text::Forge templates are very similar to ERB/ASP/PHP in syntax.
76             See the Text::Forge module for details.
77              
78             Templates are passed two parameters, the stash and the Catalyst object itself.
79              
80             Example template:
81              
82             <% my $s = shift; # now contains $c->stash %>
83            

Hello, <%= $s->{name} %>

84            

85             The current time is <%= scalar localtime %>.
86            

87              
88             The catalyst object can also be obtained through $forge->catalyst()
89             from any template.
90              
91             =head1 SEE ALSO
92              
93             L, L
94              
95             =head1 AUTHOR
96              
97             Maurice Aubrey C
98              
99             =head1 COPYRIGHT
100              
101             This program is free software, you can redistribute it and/or modify it under
102             the same terms as Perl itself.
103              
104             =cut
105              
106             1;