| Template-Direct documentation | Contained in the Template-Direct distribution. |
Template::Direct - Creates a document page based on template/datasets
use Template::Direct;
my $template = Template::Direct->new( Location => $fileName/$refName );
my $result = $page->compile( Data => {DataSets}, Language => 'en' );
Creates, Saves and Manages templates, their languages, the publication of and also does some work with the template design when saving unpublished templates
Create a new template, takes the arguments:
* Directory - Location of all files, base path.
* Location - Location of the template (Filename)
Load a Template Page object with specific language fallbacks. Returns Template::Direct::Page object.
Short cut for loading the page with Languages and then Compiling that page with data. Returns final page string.
Load a specific version of a template file, returns the template as a string.
Returns a suitable language to use for this template, given what exists.
Copyright, Martin Owens 2008, AGPL
| Template-Direct documentation | Contained in the Template-Direct distribution. |
package Template::Direct; use strict;
use Carp; use Template::Direct::Page; use Template::Direct::Data; use Template::Direct::Directory; our $VERSION = '1.16'; our $config;
sub new { my ($class, %p) = @_; if(not $p{'Directory'}) { carp "Directory is required for Document Template"; return; } if(not $p{'Location'}) { carp "Location is required for Document Template"; return; } my $self = bless \%p, $class; if(ref($p{'Directory'}) eq 'Directory') { $self->{'Dir'} = $p{'Directory'}; } else { $self->{'Dir'} = Template::Direct::Directory->new( $p{'Directory'} ); } if(not $self->{'Dir'}) { if(not $p{'Directory'}) { carp 'Template Error: Directory Required'; } else { carp "Template Error: Directory does not exist '$p{'Directory'}'"; } return; } return $self; }
sub loadPage { my ($self, %p) = @_; my $template = $self->load( Language => $p{'Language'} ); return if not $template; my $page = Template::Direct::Page->new( $template, Language => $p{'Language'}, Directory => $self->{'Dir'} ); return $page; }
sub compile { my ($self, $data, %p) = @_; my $page = $self->loadPage(%p); return if not $page; return $page->compile($data); }
sub load { my ($self, %p) = @_; my $language = _suitableLanguage( $p{'Language'} ); my $filename = $self->{'Location'}.(defined($language) ? '.'.$language : ''); my $result = $self->{'Dir'}->loadFile( $filename, Cache => $self->{'Cache'} ? $self->{'Cache'} : 1 ); return $result; }
sub _suitableLanguage { my ($self, %p) = @_; my $dir = $self->{'Dir'}; my $language = $p{'Language'}; if(UNIVERSAL::isa($language, '')) { $language = [$language]; } foreach my $lang (@{$language}) { if($dir->loadFile($p{'Template'}.".".$lang)) { return $lang; } } return; }
1;