From 6c22103b732db1aa3c4602d0ab58133c537d0080 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Thu, 18 Jul 2013 17:28:50 -0400 Subject: fix rendering two spreadsheets with the same object --- lib/Spreadsheet/Template.pm | 25 +++++++++---------------- t/template.t | 5 +++-- 2 files changed, 12 insertions(+), 18 deletions(-) diff --git a/lib/Spreadsheet/Template.pm b/lib/Spreadsheet/Template.pm index e4c568a..5a2aa23 100644 --- a/lib/Spreadsheet/Template.pm +++ b/lib/Spreadsheet/Template.pm @@ -366,10 +366,9 @@ has writer_options => ( default => sub { {} }, ); -has processor => ( +has _processor => ( is => 'ro', does => 'Spreadsheet::Template::Processor', - handles => 'Spreadsheet::Template::Processor', lazy => 1, default => sub { my $self = shift; @@ -379,18 +378,12 @@ has processor => ( }, ); -has writer => ( - is => 'ro', - does => 'Spreadsheet::Template::Writer', - handles => 'Spreadsheet::Template::Writer', - lazy => 1, - default => sub { - my $self = shift; - my $class = $self->writer_class; - load_class($class); - return $class->new($self->writer_options); - }, -); +sub _writer { + my $self = shift; + my $class = $self->writer_class; + load_class($class); + return $class->new($self->writer_options); +} =method render($template, $vars) @@ -404,11 +397,11 @@ L instance. sub render { my $self = shift; my ($template, $vars) = @_; - my $contents = $self->process($template, $vars); + my $contents = $self->_processor->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); + return $self->_writer->write($data); } __PACKAGE__->meta->make_immutable; diff --git a/t/template.t b/t/template.t index fd581dd..86d5005 100644 --- a/t/template.t +++ b/t/template.t @@ -6,9 +6,10 @@ use Test::More; use Spreadsheet::ParseXLSX; use Spreadsheet::Template; +my $template = Spreadsheet::Template->new; my $data = do { local $/; local @ARGV = ('t/data/template.json'); <> }; { - my $excel = Spreadsheet::Template->new->render( + my $excel = $template->render( $data, { rows => [ @@ -51,7 +52,7 @@ my $data = do { local $/; local @ARGV = ('t/data/template.json'); <> }; } { - my $excel = Spreadsheet::Template->new->render( + my $excel = $template->render( $data, { rows => [ -- cgit v1.2.3-54-g00ecf