/[webpac2]/trunk/lib/WebPAC/Output/TT.pm
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Annotation of /trunk/lib/WebPAC/Output/TT.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 21 - (hide annotations)
Sun Jul 17 22:28:11 2005 UTC (18 years, 9 months ago) by dpavlin
File size: 2514 byte(s)
fixed ISIS size

1 dpavlin 16 package WebPAC::Output::TT;
2 dpavlin 1
3     use warnings;
4     use strict;
5    
6 dpavlin 16 use base qw/WebPAC::Common/;
7    
8     use Template;
9     use Data::Dumper;
10    
11 dpavlin 1 =head1 NAME
12    
13 dpavlin 16 WebPAC::Output::TT - use Template Toolkit to produce output
14 dpavlin 1
15     =head1 VERSION
16    
17     Version 0.01
18    
19     =cut
20    
21     our $VERSION = '0.01';
22    
23     =head1 SYNOPSIS
24    
25 dpavlin 16 Produce output using Template Toolkit.
26 dpavlin 1
27 dpavlin 16 =head1 FUNCTIONS
28 dpavlin 1
29 dpavlin 16 =head2 new
30 dpavlin 1
31 dpavlin 16 Create new instance.
32 dpavlin 1
33 dpavlin 16 my $tt = new WebPAC::Output::TT(
34     include_path => '/path/to/conf/output/tt',
35     filters => {
36     filter_1 => sub { uc(shift) },
37     },
38     );
39 dpavlin 1
40 dpavlin 16 By default, Template Toolkit will C<EVAL_PERL> if included in templates.
41 dpavlin 1
42 dpavlin 16 =cut
43 dpavlin 1
44 dpavlin 16 sub new {
45     my $class = shift;
46     my $self = {@_};
47     bless($self, $class);
48 dpavlin 1
49 dpavlin 16 my $log = $self->_get_logger;
50    
51     # create Template toolkit instance
52     $self->{'tt'} = Template->new(
53     INCLUDE_PATH => $self->{'include_path'},
54     FILTERS => $self->{'filter'},
55     EVAL_PERL => 1,
56     );
57    
58     $log->logdie("can't create TT object: $Template::ERROR") unless ($self->{'tt'});
59    
60     $log->debug("filters defined: ",Dumper($self->{'filter'}));
61    
62     $self ? return $self : return undef;
63     }
64    
65    
66     =head2 apply
67    
68     Create output from in-memory data structure using Template Toolkit template.
69    
70 dpavlin 21 my $text = $tt->apply(
71     template => 'text.tt',
72     data => @ds
73     );
74 dpavlin 16
75 dpavlin 1 =cut
76    
77 dpavlin 16 sub apply {
78     my $self = shift;
79    
80     my $args = {@_};
81    
82     my $log = $self->_get_logger();
83    
84     foreach my $a (qw/template data/) {
85     $log->logconfess("need $a") unless ($args->{$a});
86     }
87    
88     my $out;
89    
90     $self->{'tt'}->process(
91     $args->{'template'},
92     $args,
93     \$out
94     ) || $log->logconfess( "apply can't process template: ", $self->{'tt'}->error() );
95    
96     return $out;
97 dpavlin 1 }
98    
99 dpavlin 16 =head2 to_file
100 dpavlin 1
101 dpavlin 16 Create output from in-memory data structure using Template Toolkit template
102     to a file.
103    
104     $tt->to_file(
105     file => 'out.txt',
106     template => 'text.tt',
107     data => @ds
108     );
109    
110 dpavlin 1 =cut
111    
112 dpavlin 16 sub to_file {
113     my $self = shift;
114    
115     my $args = {@_};
116    
117     my $log = $self->_get_logger();
118    
119     my $file = $args->{'file'} || $log->logconfess("need file name");
120    
121     $log->debug("creating file ",$file);
122    
123     open(my $fh, ">", $file) || $log->logdie("can't open output file '$file': $!");
124     print $fh $self->output(
125     template => $args->{'template'},
126     data => $args->{'data'},
127     ) || $log->logdie("print: $!");
128     close($fh) || $log->logdie("close: $!");
129    
130     return 1;
131 dpavlin 1 }
132    
133 dpavlin 16
134 dpavlin 1 =head1 AUTHOR
135    
136     Dobrica Pavlinusic, C<< <dpavlin@rot13.org> >>
137    
138     =head1 COPYRIGHT & LICENSE
139    
140     Copyright 2005 Dobrica Pavlinusic, All Rights Reserved.
141    
142     This program is free software; you can redistribute it and/or modify it
143     under the same terms as Perl itself.
144    
145     =cut
146    
147 dpavlin 16 1; # End of WebPAC::Output::TT

  ViewVC Help
Powered by ViewVC 1.1.26