/[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 16 - (show annotations)
Sun Jul 17 11:37:07 2005 UTC (18 years, 9 months ago) by dpavlin
File size: 2509 byte(s)
Added Output::WebPAC::TT to produce Template Toolkit output.

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( template => 'text.tt', data => @ds );
71
72 =cut
73
74 sub apply {
75 my $self = shift;
76
77 my $args = {@_};
78
79 my $log = $self->_get_logger();
80
81 foreach my $a (qw/template data/) {
82 $log->logconfess("need $a") unless ($args->{$a});
83 }
84
85 my $out;
86
87 $self->{'tt'}->process(
88 $args->{'template'},
89 $args,
90 \$out
91 ) || $log->logconfess( "apply can't process template: ", $self->{'tt'}->error() );
92
93 return $out;
94 }
95
96 =head2 to_file
97
98 Create output from in-memory data structure using Template Toolkit template
99 to a file.
100
101 $tt->to_file(
102 file => 'out.txt',
103 template => 'text.tt',
104 data => @ds
105 );
106
107 =cut
108
109 sub to_file {
110 my $self = shift;
111
112 my $args = {@_};
113
114 my $log = $self->_get_logger();
115
116 my $file = $args->{'file'} || $log->logconfess("need file name");
117
118 $log->debug("creating file ",$file);
119
120 open(my $fh, ">", $file) || $log->logdie("can't open output file '$file': $!");
121 print $fh $self->output(
122 template => $args->{'template'},
123 data => $args->{'data'},
124 ) || $log->logdie("print: $!");
125 close($fh) || $log->logdie("close: $!");
126
127 return 1;
128 }
129
130
131 =head1 AUTHOR
132
133 Dobrica Pavlinusic, C<< <dpavlin@rot13.org> >>
134
135 =head1 COPYRIGHT & LICENSE
136
137 Copyright 2005 Dobrica Pavlinusic, All Rights Reserved.
138
139 This program is free software; you can redistribute it and/or modify it
140 under the same terms as Perl itself.
141
142 =cut
143
144 1; # End of WebPAC::Output::TT

  ViewVC Help
Powered by ViewVC 1.1.26