diff options
author | Jason <jason@socialflow.com> | 2013-08-27 14:01:50 +0000 |
---|---|---|
committer | Jason <jason@socialflow.com> | 2013-08-27 14:01:50 +0000 |
commit | c41829e1b87eb19d80776d422938f7fff25f3c76 (patch) | |
tree | 742d3cbcb027f8484294bfc2ba305b1a39de6f51 | |
parent | 72cb31cbc57dbe60a1cd4e069569eb1fd3472006 (diff) | |
download | spreadsheet-template-c41829e1b87eb19d80776d422938f7fff25f3c76.tar.gz spreadsheet-template-c41829e1b87eb19d80776d422938f7fff25f3c76.zip |
documentation for merge helper function and added a test demonstrating functionality
-rw-r--r-- | lib/Spreadsheet/Template/Helpers/Xslate.pm | 1 | ||||
-rw-r--r-- | lib/Spreadsheet/Template/Processor/Xslate.pm | 7 | ||||
-rw-r--r-- | t/data/merge.json | 27 | ||||
-rw-r--r-- | t/merge.t | 46 | ||||
-rw-r--r-- | t/template.t | 2 |
5 files changed, 82 insertions, 1 deletions
diff --git a/lib/Spreadsheet/Template/Helpers/Xslate.pm b/lib/Spreadsheet/Template/Helpers/Xslate.pm index df99a85..d4238e9 100644 --- a/lib/Spreadsheet/Template/Helpers/Xslate.pm +++ b/lib/Spreadsheet/Template/Helpers/Xslate.pm @@ -76,6 +76,7 @@ sub _curry_package { format c + merge true false diff --git a/lib/Spreadsheet/Template/Processor/Xslate.pm b/lib/Spreadsheet/Template/Processor/Xslate.pm index f0a7cf9..1454e30 100644 --- a/lib/Spreadsheet/Template/Processor/Xslate.pm +++ b/lib/Spreadsheet/Template/Processor/Xslate.pm @@ -39,6 +39,13 @@ C<"date_time">, and C<%args> contains any other parameters (such as C<formula>, for instance) to declare for the cell. C<$type> is optional, and if not passed, defaults to C<"string">. +=item merge($range, $content, $format) + +Returns representation of a range of cells to be merged. C<$range> is the +Excel representation of a range of cells, ex: "A1:B10". C<$content> is the +content to be placed in the merged cell. C<$format> is the name of a format +declared with the C<format> helper or a hashref of format options. + =item true Returns C<JSON::true>. diff --git a/t/data/merge.json b/t/data/merge.json new file mode 100644 index 0000000..2a86bdf --- /dev/null +++ b/t/data/merge.json @@ -0,0 +1,27 @@ +%% my $default = { color => '#000000', size => 14 }; +%% format(basic => $default.merge({bold => true()})); + +{ + "selection" : 0, + "worksheets" : [ + { + "column_widths" : [ 14.6, 18.5, 15.8, 12.2 ], + "name" : "Merge Report 1", + "selection" : [ 1, 9 ], + "row_heights" : [ 25, 18, 18, 18 ], + "cells" : [ + %% for $rows -> $row { + [ + [% c($row.value1, "basic") %], + [% c($row.value2, "basic") %], + [% c($row.value3, "basic") %], + [% c($row.value4, "basic") %] + ] + %% } + ], + "merge" : [ + [% merge('A1:D1', 'Merged Cells', 'basic') %] + ] + } + ] +} diff --git a/t/merge.t b/t/merge.t new file mode 100644 index 0000000..0564deb --- /dev/null +++ b/t/merge.t @@ -0,0 +1,46 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use Test::More; + +use Data::Dumper; + +use Spreadsheet::ParseXLSX; +use Spreadsheet::Template; + +my $template = Spreadsheet::Template->new; +my $data = do { local $/; local @ARGV = ('t/data/merge.json'); <> }; + +{ + + my $excel = $template->render( + $data, + { + rows => [ + { + value1 => "Merge 1", + value2 => "Merge 2", + value3 => "Merge 3", + value4 => "Merge 4" + } + ], + } + ); + + open my $fh, '<', \$excel; + my $wb = Spreadsheet::ParseXLSX->new->parse($fh); + is($wb->worksheet_count, 1); + + my $ws = $wb->worksheet(0); + is($ws->get_name, 'Merge Report 1'); + + for my $col (0..3) { + if ($col == 0) { + is($ws->get_cell(0, $col)->value, 'Merged Cells'); + } else { + is($ws->get_cell(0, $col)->value, ''); + } + } +} + +done_testing; diff --git a/t/template.t b/t/template.t index 86d5005..63ddf34 100644 --- a/t/template.t +++ b/t/template.t @@ -7,7 +7,7 @@ use Spreadsheet::ParseXLSX; use Spreadsheet::Template; my $template = Spreadsheet::Template->new; -my $data = do { local $/; local @ARGV = ('t/data/template.json'); <> }; +my $data = do { local $/; local @ARGV = ('t/data/merge.json'); <> }; { my $excel = $template->render( $data, |