Behavior of merge_range adjusted #35559
Robert Bohne [Sun, 29 Apr 2012 15:37:28 +0000 (17:37 +0200)]
Now it works: <merge_range> Content </ merge_range>. (As described in the POD)

Changes
lib/Excel/Template/Element/MergeRange.pm
t/028_merge_range.t

diff --git a/Changes b/Changes
index d407bff..0520c3c 100644 (file)
--- a/Changes
+++ b/Changes
@@ -1,5 +1,8 @@
 Revision history for Perl distribution Excel::Template
 
+
+    Behavior of merge_range adjusted, now it works: 
+      <merge_range> Content </ merge_range>. (As described in the POD)
     Merge range formatting tends to collide with non-merged formatting,
       thanks to Nigel Metheringham.
     Fixed some documentation errors, thanks to Robert James Clay.
index e8b72dd..b540942 100644 (file)
@@ -4,9 +4,9 @@ use strict;
 
 BEGIN {
     use vars qw(@ISA);
-    @ISA = qw(Excel::Template::Element);
+    @ISA = qw(Excel::Template::Element::Cell);
 
-    use Excel::Template::Element;
+    use Excel::Template::Element::Cell;
     use Excel::Template::Element::Range;
 }
 
@@ -46,7 +46,7 @@ sub render {
 
     $context->active_worksheet->merge_range(
         $range,
-        $context->get($self, 'TEXT'),
+        $self->_get_text($context),
         $format,
     );
 
@@ -86,9 +86,26 @@ None
 
   <cell ref="foo"/>
   <cell ref="foo"/>
-  <cell ref="foo"/>    
+  <cell ref="foo"/>
   <merge_range ref="foo">Text to insert into merged range</merge_range>
 
+Or a cross rows:
+
+  <row>
+    <cell ref="foo"/>
+    <cell ref="foo"/>
+    <cell ref="foo"/>
+  </row>
+  <row>
+    <cell ref="foo"/>
+    <cell ref="foo"/>
+    <cell ref="foo"/>
+    <format>
+      <merge_range ref="foo">Text to insert into merged range</merge_range>
+    </format>
+  </row>
+
+
 =head1 AUTHOR
 
 Stevan Little (stevan.little@iinteractive.com)
index 51f8d89..6872857 100644 (file)
@@ -27,6 +27,11 @@ Spreadsheet::WriteExcel::Worksheet::write( '0', '0', '', '1' )
 Spreadsheet::WriteExcel::Worksheet::write( '0', '1', '', '1' )
 Spreadsheet::WriteExcel::add_format( '' )
 Spreadsheet::WriteExcel::Worksheet::merge_range( 'A1:B1', 'This is the Foo Range', '2' )
+Spreadsheet::WriteExcel::add_worksheet( '' )
+Spreadsheet::WriteExcel::Worksheet::new( '' )
+Spreadsheet::WriteExcel::Worksheet::write( '0', '0', '', '1' )
+Spreadsheet::WriteExcel::Worksheet::write( '0', '1', '', '1' )
+Spreadsheet::WriteExcel::Worksheet::merge_range( 'A1:B1', 'This is the Foo Range2', '2' )
 Spreadsheet::WriteExcel::close( '' )
 __END_EXPECTED__
 
@@ -34,9 +39,14 @@ __DATA__
 <workbook>
   <worksheet>
     <cell ref="foo" />
-    <cell ref="foo" />    
-    <format is_merged="1">    
+    <cell ref="foo" />
+    <format is_merged="1">
       <merge_range ref="foo" text="This is the Foo Range" />
     </format>
   </worksheet>
+  <worksheet>
+    <cell ref="foo2" />
+    <cell ref="foo2" />
+    <merge_range ref="foo2">This is the Foo Range2</merge_range>
+  </worksheet>
 </workbook>