summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2013-07-02 11:19:36 -0400
committerJesse Luehrs <doy@tozt.net>2013-07-02 11:22:21 -0400
commite99fa320ad6c3d3aa8b3a816a1ab4034a7f37247 (patch)
treedfa9b455e3e693f542db475c68cf7d7d201e1605
parentec35970711555786ce76d5d3de08fd3c61623188 (diff)
downloadspreadsheet-template-e99fa320ad6c3d3aa8b3a816a1ab4034a7f37247.tar.gz
spreadsheet-template-e99fa320ad6c3d3aa8b3a816a1ab4034a7f37247.zip
allow passing options to the backends
-rw-r--r--lib/Spreadsheet/Template.pm16
-rw-r--r--lib/Spreadsheet/Template/Generator.pm11
2 files changed, 24 insertions, 3 deletions
diff --git a/lib/Spreadsheet/Template.pm b/lib/Spreadsheet/Template.pm
index 1000393..21e432c 100644
--- a/lib/Spreadsheet/Template.pm
+++ b/lib/Spreadsheet/Template.pm
@@ -11,12 +11,24 @@ has processor_class => (
default => 'Spreadsheet::Template::Processor::Xslate',
);
+has processor_options => (
+ is => 'ro',
+ isa => 'HashRef',
+ default => sub { {} },
+);
+
has writer_class => (
is => 'ro',
isa => 'Str',
default => 'Spreadsheet::Template::Writer::XLSX',
);
+has writer_options => (
+ is => 'ro',
+ isa => 'HashRef',
+ default => sub { {} },
+);
+
has processor => (
is => 'ro',
does => 'Spreadsheet::Template::Processor',
@@ -26,7 +38,7 @@ has processor => (
my $self = shift;
my $class = $self->processor_class;
load_class($class);
- return $class->new;
+ return $class->new($self->processor_options);
},
);
@@ -39,7 +51,7 @@ has writer => (
my $self = shift;
my $class = $self->writer_class;
load_class($class);
- return $class->new;
+ return $class->new($self->writer_options);
},
);
diff --git a/lib/Spreadsheet/Template/Generator.pm b/lib/Spreadsheet/Template/Generator.pm
index 655f1b0..0590eb6 100644
--- a/lib/Spreadsheet/Template/Generator.pm
+++ b/lib/Spreadsheet/Template/Generator.pm
@@ -4,13 +4,22 @@ use Moose;
use Class::Load 'load_class';
use JSON;
+has parser_options => (
+ is => 'ro',
+ isa => 'HashRef',
+ default => sub { {} },
+);
+
sub generate {
my $self = shift;
my ($filename) = @_;
(my $ext = $filename) =~ s/.*\.//;
my $class = $self->parser_classes->{$ext};
load_class($class);
- my $parser = $class->new(filename => $filename);
+ my $parser = $class->new(
+ filename => $filename,
+ %{ $self->parser_options }
+ );
my $data = $parser->parse;
return JSON->new->pretty->canonical->encode($data);
}