package Pod::ProjectDocs::Template; use strict; use warnings; use Template; use File::Basename; use File::Spec; sub new { my $class = shift; my $self = bless { }, $class; $self->_init(@_); return $self; } sub _init { my $self = shift; $self->{_curpath} = ''; $self->{_tt} = Template->new( { FILTERS => { relpath => sub { my $path = shift; my $curpath = $self->{_curpath}; my($name, $dir) = fileparse $curpath, qr/\.html/; return File::Spec->abs2rel($path, $dir); }, return2br => sub { my $text = shift; $text =~ s!\r\n!
!g; $text =~ s!\n!
!g; return $text; } }, } ); } sub process { my($self, $doc, $data, $output) = @_; $self->{_curpath} = $doc->get_output_path; $self->{_tt}->process(\$data, $output, \my $text) or $self->_croak($self->{_tt}->error); $self->{_curpath} = ''; return $text; } sub _croak { my($self, $msg) = @_; require Carp; Carp::croak($msg); } 1; __END__