summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2013-07-18 17:28:50 -0400
committerJesse Luehrs <doy@tozt.net>2013-07-18 17:28:50 -0400
commit6c22103b732db1aa3c4602d0ab58133c537d0080 (patch)
treef1794550a091bce3174fc21e902d02b128caa9b9
parent1b404926df08ac4bbe6cbd2c7ada14de6cebda63 (diff)
downloadspreadsheet-template-6c22103b732db1aa3c4602d0ab58133c537d0080.tar.gz
spreadsheet-template-6c22103b732db1aa3c4602d0ab58133c537d0080.zip
fix rendering two spreadsheets with the same object
-rw-r--r--lib/Spreadsheet/Template.pm25
-rw-r--r--t/template.t5
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<Spreadsheet::Template::Writer> 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 => [