summaryrefslogtreecommitdiffstats
path: root/lib/Spreadsheet/Template/Generator.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Spreadsheet/Template/Generator.pm')
-rw-r--r--lib/Spreadsheet/Template/Generator.pm28
1 files changed, 28 insertions, 0 deletions
diff --git a/lib/Spreadsheet/Template/Generator.pm b/lib/Spreadsheet/Template/Generator.pm
new file mode 100644
index 0000000..aa5e0e0
--- /dev/null
+++ b/lib/Spreadsheet/Template/Generator.pm
@@ -0,0 +1,28 @@
+package Spreadsheet::Template::Generator;
+use Moose;
+
+use Class::Load 'load_class';
+use JSON;
+
+sub generate {
+ my $self = shift;
+ my ($filename) = @_;
+ (my $ext = $filename) =~ s/.*\.//;
+ my $class = $self->parser_classes->{$ext};
+ load_class($class);
+ my $parser = $class->new;
+ my $data = $parser->parse($filename);
+ return JSON->new->pretty->encode($data);
+}
+
+sub parser_classes {
+ +{
+ 'xls' => 'Spreadsheet::Template::Generator::Parser::XLS',
+ 'xlsx' => 'Spreadsheet::Template::Generator::Parser::XLSX',
+ }
+}
+
+__PACKAGE__->meta->make_immutable;
+no Moose;
+
+1;