From 657bf7846d129b2ff0ab0d2264610c689d4ecd02 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 2 Sep 2008 14:57:20 -0400 Subject: table: Support header=column to make the table header be the first column of the data. (AlexandreDupas) --- IkiWiki/Plugin/table.pm | 42 +++++++++++++++++++++++------------------- 1 file changed, 23 insertions(+), 19 deletions(-) (limited to 'IkiWiki/Plugin') diff --git a/IkiWiki/Plugin/table.pm b/IkiWiki/Plugin/table.pm index 1302646b1..55d78a3e1 100644 --- a/IkiWiki/Plugin/table.pm +++ b/IkiWiki/Plugin/table.pm @@ -22,7 +22,7 @@ sub getsetup () { #{{{ sub preprocess (@) { #{{{ my %params =( format => 'auto', - header => 'yes', + header => 'row', @_ ); @@ -74,7 +74,7 @@ sub preprocess (@) { #{{{ } my $header; - if (lc($params{header}) eq "yes") { + if (lc($params{header}) eq "row" || lc($params{header}) eq "yes") { $header=shift @data; } if (! @data) { @@ -86,11 +86,10 @@ sub preprocess (@) { #{{{ ? "' : '
'; push @lines, "\t", - genrow($params{page}, $params{destpage}, "th", @$header), + genrow(\%params, "th", @$header), "\t" if defined $header; push @lines, "\t" if defined $header; - push @lines, genrow($params{page}, $params{destpage}, "td", @$_) - foreach @data; + push @lines, genrow(\%params, "td", @$_) foreach @data; push @lines, "\t" if defined $header; push @lines, '
'; my $html = join("\n", @lines); @@ -153,26 +152,39 @@ sub split_dsv ($$) { #{{{ return @data; } #}}} -sub genrow ($$$@) { #{{{ - my $page = shift; - my $destpage = shift; +sub genrow ($@) { #{{{ + my %params=%{shift()}; my $elt = shift; my @data = @_; + my $page=$params{page}; + my $destpage=$params{destpage}; + my $type=pagetype($pagesources{$page}); + my @ret; push @ret, "\t\t"; for (my $x=0; $x < @data; $x++) { - my $cell=htmlize($page, $destpage, $data[$x]); + my $cell=IkiWiki::htmlize($page, $destpage, $type, + IkiWiki::preprocess($page, $destpage, $data[$x])); + + # automatic colspan for empty cells my $colspan=1; while ($x+1 < @data && $data[$x+1] eq '') { $x++; $colspan++; } + + # check if the first column should be a header + my $e=$elt; + if ($x == 0 && lc($params{header}) eq "column") { + $e="th"; + } + if ($colspan > 1) { - push @ret, "\t\t\t<$elt colspan=\"$colspan\">$cell" + push @ret, "\t\t\t<$e colspan=\"$colspan\">$cell" } else { - push @ret, "\t\t\t<$elt>$cell" + push @ret, "\t\t\t<$e>$cell" } } push @ret, "\t\t"; @@ -180,12 +192,4 @@ sub genrow ($$$@) { #{{{ return @ret; } #}}} -sub htmlize ($$$) { #{{{ - my $page = shift; - my $destpage = shift; - - return IkiWiki::htmlize($page, $destpage, pagetype($pagesources{$page}), - IkiWiki::preprocess($page, $destpage, shift)); -} - 1 -- cgit v1.2.3