/[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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 21 - (show 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 package WebPAC::Output::TT;
2
3 use warnings;
4 use strict;
5
6 use base qw/WebPAC::Common/;
7
8 use Template;
9 use Data::Dumper;
10
11 =head1 NAME
12
13 WebPAC::Output::TT - use Template Toolkit to produce output
14
15 =head1 VERSION
16
17 Version 0.01
18
19 =cut
20
21 our $VERSION = '0.01';
22
23 =head1 SYNOPSIS
24
25 Produce output using Template Toolkit.
26
27 =head1 FUNCTIONS
28
29 =head2 new
30
31 Create new instance.
32
33 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
40 By default, Template Toolkit will C<EVAL_PERL> if included in templates.
41
42 =cut
43
44 sub new {
45 my $class = shift;
46 my $self = {@_};
47 bless($self, $class);
48
49 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 my $text = $tt->apply(
71 template => 'text.tt',
72 data => @ds
73 );
74
75 =cut
76
77 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 }
98
99 =head2 to_file
100
101 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 =cut
111
112 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 }
132
133
134 =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 1; # End of WebPAC::Output::TT

  ViewVC Help
Powered by ViewVC 1.1.26