From: Chris P. <per...@us...> - 2004-09-24 03:50:41
|
Update of /cvsroot/sawa/sawa/lib/SAWA/Output In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv26365/lib/SAWA/Output Added Files: TT2.pm Log Message: SAWA::Output::TT2: A Template Toolkit 2 Output Handler Base Class --- NEW FILE: TT2.pm --- package SAWA::Output::TT2; use strict; use warnings; use SAWA::Constants; use Template; use base qw(SAWA::Output); our @symbols = qw( get_tt_conf get_tt_vars get_template get_transformer transform ); our %tt_conf; sub tt_conf { my ($self, $conf) = @_; %tt_conf = (%tt_conf, %$conf) if defined $conf; return \%tt_conf; } sub template { $_[0]->scalar_accessor('template', sub {return \''}, $_[1]); } sub template_path { $_[0]->scalar_accessor('template_path', sub {return \''}, $_[1]); } sub transformer { $_[0]->scalar_accessor('transformer', sub {return \''}, $_[1]); } sub tt_vars { $_[0]->scalar_accessor('tt_vars', sub { return {} }, $_[1]); } sub init_symbols { my $self = shift; $self->add_symbol_handler( $_ => $self->can($_) ) for @symbols; $self->SUPER::init_symbols; } sub init_queue { my $self = shift; $self->add_to_queue( $_ ) for @symbols; $self->SUPER::init_queue; } sub get_transformer { my $self = shift; my $conf = $self->tt_conf; my $template_path = $self->template_path; my $tt_obj ||= Template->new( { %$conf, INCLUDE_PATH => $template_path } ); $self->transformer($tt_obj); return OK; } sub transform { my ($self, $ctxt) = @_; my $tt = $self->transformer; my $template = $ctxt->{template}; my %tt_vars = %{ $self->tt_vars }; my $output; eval { die $tt->error unless ( $tt->process( $template, \%tt_vars, \$output ) ); }; if ($@) { $self->error->warn("Corrupted Template: $@"); return OK; } $self->document($output); return OK; } sub generate { my $self = shift; my $ctxt = shift; my $string = $self->document; unless ( defined($string) and length($string) ) { $self->error->warn("SAWA::Output::TT2: no content passed!\n"); return DONE; } my $q = $self->query; if ( $q->isa('Apache::Request') ) { $q->print( $string ); } else { print $string; } return OK; } # abstract methods sub get_tt_conf { return OK } sub get_tt_vars { return OK } sub get_template { return OK } 1; __END__ |