sub add_data {
my $self = shift;
+ my $last_row_set;
+
while (my $arg = shift) {
if ('ARRAY' eq ref $arg) {
push @{ $self->{data} }, $arg;
+ $last_row_set = $arg;
} elsif ('HASH' eq ref $arg) {
- push @{ $self->{data} }, [ $arg ];
+ my $row_set = [ $arg ];
+ push @{ $self->{data} }, $row_set;
+ $last_row_set = $row_set;
} else {
$self->{form}->error('Incorrect usage -- expecting hash or array ref');
}
}
+
+ return $last_row_set;
+}
+
+sub add_separator {
+ my $self = shift;
+
+ push @{ $self->{data} }, { 'type' => 'separator' };
}
sub clear_data {
my @rows;
foreach my $row_set (@{ $self->{data} }) {
+ if ('HASH' eq ref $row_set) {
+ my $row_data = {
+ 'IS_CONTROL' => 1,
+ 'IS_SEPARATOR' => $row_set->{type} eq 'separator',
+ 'NUM_COLUMNS' => scalar @visible_columns,
+ };
+
+ push @rows, $row_data;
+
+ next;
+ }
+
$outer_idx++;
foreach my $row (@{ $row_set }) {
}
foreach my $row_set (@{ $self->{data} }) {
+ next if ('ARRAY' ne ref $row_set);
foreach my $row (@{ $row_set }) {
$csv->print($stdout, [ map { $row->{$_}->{data} } @visible_columns ]);
}
</tr>
<TMPL_LOOP ROWS>
- <tr class="listrow<TMPL_VAR outer_idx_odd>">
- <TMPL_LOOP COLUMNS>
- <td<TMPL_IF align> align="<TMPL_VAR align>"</TMPL_IF><TMPL_IF valign> valign="<TMPL_VAR valign>"</TMPL_IF>>
- <TMPL_IF raw_data><TMPL_VAR raw_data></TMPL_IF>
- <TMPL_IF data>
- <TMPL_IF link><a href="<TMPL_VAR link>"></TMPL_IF>
- <TMPL_VAR data><TMPL_IF link></a></TMPL_IF>
- </TMPL_IF>
- </td>
- </TMPL_LOOP>
- </tr>
+ <TMPL_IF IS_CONTROL>
+ <TMPL_IF IS_SEPARATOR><tr><td colspan="<TMPL_VAR NUM_COLUMNS>"><hr size="3" noshade></td></tr></TMPL_IF>
+ <TMPL_ELSE>
+ <tr class="listrow<TMPL_VAR outer_idx_odd>">
+ <TMPL_LOOP COLUMNS>
+ <td<TMPL_IF align> align="<TMPL_VAR align>"</TMPL_IF><TMPL_IF valign> valign="<TMPL_VAR valign>"</TMPL_IF><TMPL_IF class> class="<TMPL_VAR class>"</TMPL_IF>>
+ <TMPL_IF raw_data><TMPL_VAR raw_data></TMPL_IF>
+ <TMPL_IF data>
+ <TMPL_IF link><a href="<TMPL_VAR link>"></TMPL_IF>
+ <TMPL_VAR data><TMPL_IF link></a></TMPL_IF>
+ </TMPL_IF>
+ </td>
+ </TMPL_LOOP>
+ </tr>
+ </TMPL_IF>
</TMPL_LOOP>
<tr><td colspan="<TMPL_VAR NUM_COLUMNS>"><hr size="3" noshade></td></tr>
</tr>
<TMPL_LOOP ROWS>
- <tr class="listrow<TMPL_VAR outer_idx_odd>">
- <TMPL_LOOP COLUMNS>
- <td<TMPL_IF align> align="<TMPL_VAR align>"</TMPL_IF><TMPL_IF valign> valign="<TMPL_VAR valign>"</TMPL_IF>>
- <TMPL_IF raw_data><TMPL_VAR raw_data></TMPL_IF>
- <TMPL_IF data>
- <TMPL_IF link><a href="<TMPL_VAR link>"></TMPL_IF>
- <TMPL_VAR data><TMPL_IF link></a></TMPL_IF>
- </TMPL_IF>
- </td>
- </TMPL_LOOP>
- </tr>
+ <TMPL_IF IS_CONTROL>
+ <TMPL_IF IS_SEPARATOR><tr><td colspan="<TMPL_VAR NUM_COLUMNS>"><hr size="3" noshade></td></tr></TMPL_IF>
+ <TMPL_ELSE>
+ <tr class="listrow<TMPL_VAR outer_idx_odd>">
+ <TMPL_LOOP COLUMNS>
+ <td<TMPL_IF align> align="<TMPL_VAR align>"</TMPL_IF><TMPL_IF valign> valign="<TMPL_VAR valign>"</TMPL_IF><TMPL_IF class> class="<TMPL_VAR class>"</TMPL_IF>>
+ <TMPL_IF raw_data><TMPL_VAR raw_data></TMPL_IF>
+ <TMPL_IF data>
+ <TMPL_IF link><a href="<TMPL_VAR link>"></TMPL_IF>
+ <TMPL_VAR data><TMPL_IF link></a></TMPL_IF>
+ </TMPL_IF>
+ </td>
+ </TMPL_LOOP>
+ </tr>
+ </TMPL_IF>
</TMPL_LOOP>
<tr><td colspan="<TMPL_VAR NUM_COLUMNS>"><hr size="3" noshade></td></tr>