X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/a65d312467c5ab179ecf4aa715790f371a46634a..70353c5807ca950ad652ea9da19665631369d5a6:/IkiWiki/Plugin/table.pm diff --git a/IkiWiki/Plugin/table.pm b/IkiWiki/Plugin/table.pm index 892ea182e..e782fc238 100644 --- a/IkiWiki/Plugin/table.pm +++ b/IkiWiki/Plugin/table.pm @@ -7,13 +7,22 @@ use Encode; use IkiWiki 2.00; sub import { #{{{ + hook(type => "getsetup", id => "table", call => \&getsetup); hook(type => "preprocess", id => "table", call => \&preprocess); } # }}} +sub getsetup () { #{{{ + return + plugin => { + safe => 1, + rebuild => undef, + }, +} #}}} + sub preprocess (@) { #{{{ my %params =( format => 'auto', - header => 'yes', + header => 'row', @_ ); @@ -65,7 +74,7 @@ sub preprocess (@) { #{{{ } my $header; - if (lc($params{header}) eq "yes") { + if (lc($params{header}) eq "row" || IkiWiki::yesno($params{header})) { $header=shift @data; } if (! @data) { @@ -77,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); @@ -144,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"; @@ -171,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