diff options
author | Jesse Luehrs <doy@tozt.net> | 2013-04-25 14:21:51 -0500 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2013-04-25 14:21:51 -0500 |
commit | 08e2e1e9adc9d1de0a2e5e7b74cc7c8553f3672c (patch) | |
tree | f7c928ba61ab1cd02a31877e863bebfd77b99c3b /lib/Spreadsheet/Template.pm | |
parent | ecbc30fea47a08adca0c709174bd804c4434554e (diff) | |
download | spreadsheet-template-08e2e1e9adc9d1de0a2e5e7b74cc7c8553f3672c.tar.gz spreadsheet-template-08e2e1e9adc9d1de0a2e5e7b74cc7c8553f3672c.zip |
outline of the renderer part
Diffstat (limited to 'lib/Spreadsheet/Template.pm')
-rw-r--r-- | lib/Spreadsheet/Template.pm | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/lib/Spreadsheet/Template.pm b/lib/Spreadsheet/Template.pm index e69de29..8d8dcc4 100644 --- a/lib/Spreadsheet/Template.pm +++ b/lib/Spreadsheet/Template.pm @@ -0,0 +1,58 @@ +package Spreadsheet::Template; +use Moose; + +use Class::Load 'load_class'; +use JSON; + +has processor_class => ( + is => 'ro', + isa => 'Str', + default => 'Spreadsheet::Template::Processor::Xslate', +); + +has writer_class => ( + is => 'ro', + isa => 'Str', + default => 'Spreadsheet::Template::Writer::XLSX', +); + +has processor => ( + is => 'ro', + does => 'Spreadsheet::Template::Processor', + handles => 'Spreadsheet::Template::Processor', + lazy => 1, + default => sub { + my $self = shift; + my $class = $self->processor_class; + load_class($class); + return $class->new; + }, +); + +has writer => ( + is => 'ro', + does => 'Spreadsheet::Template::Renderer', + handles => 'Spreadsheet::Template::Renderer', + lazy => 1, + default => sub { + my $self = shift; + my $class = $self->writer_class; + load_class($class); + return $class->new; + }, +); + +sub render { + my $self = shift; + my ($template, $vars) = @_; + my $contents = $self->process($template, $vars); + # not decode_json, since we expect that we are already being handed a + # character string (decode_json also decodes utf8) + my $data = from_json($contents); + return $self->write($data); +} + +__PACKAGE__->meta->make_immutable; +no Moose; + +1; |