From: Joey Hess Date: Tue, 2 Sep 2008 18:57:20 +0000 (-0400) Subject: table: Support header=column to make the table header be the first column of the... X-Git-Url: https://scripts.mit.edu/gitweb/www/ikiwiki.git/commitdiff_plain/657bf7846d129b2ff0ab0d2264610c689d4ecd02 table: Support header=column to make the table header be the first column of the data. (AlexandreDupas) --- 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 diff --git a/debian/changelog b/debian/changelog index 85c550c28..590e06654 100644 --- a/debian/changelog +++ b/debian/changelog @@ -9,6 +9,8 @@ ikiwiki (2.63) UNRELEASED; urgency=low * style.css: Add missing semicolon. Closes: #497176 * filecheck: Fall back to testing for binary or plain text files if no mime type is detected. + * table: Support header=column to make the table header be the first + column of the data. (AlexandreDupas) -- Joey Hess Thu, 28 Aug 2008 16:08:18 -0400 diff --git a/doc/plugins/table.mdwn b/doc/plugins/table.mdwn index b99bb7cd5..2dccb9458 100644 --- a/doc/plugins/table.mdwn +++ b/doc/plugins/table.mdwn @@ -41,5 +41,6 @@ cells. For example: * `delimiter` - The character used to separate fields. By default, DSV format uses a pipe (`|`), and CSV uses a comma (`,`). * `class` - A CSS class for the table html element. -* `header` - Set to "no" to make a table without a header. By default, - the first data line is used as the table header. +* `header` - By default, or if set to "row", the first data line is used + as the table header. Set it to "no" to make a table without a header, or + "column" to make the first column be the header. diff --git a/doc/plugins/table/discussion.mdwn b/doc/plugins/table/discussion.mdwn index 7228a83df..675f7f7df 100644 --- a/doc/plugins/table/discussion.mdwn +++ b/doc/plugins/table/discussion.mdwn @@ -24,3 +24,8 @@ Here is the links to the patch and to a patched version of the plugin : I hope this might be intresting for some ikiwiki user's. --[[AlexandreDupas]] + +> Thanks for the patch, I've merged it in. +> (Just FYI, in future, I recommend using a unified diff. Also, not +> renaming variables that don't really need to be renamed makes your patch +> easier to apply.) --[[Joey]] diff --git a/doc/todo/table_with_header_column.mdwn b/doc/todo/table_with_header_column.mdwn index 36aee6f2a..a729ffaeb 100644 --- a/doc/todo/table_with_header_column.mdwn +++ b/doc/todo/table_with_header_column.mdwn @@ -3,3 +3,5 @@ Tables support a header row or no header, but do not support a header column. > I have proposed a patch to the table plugin that enable such behaviour: [[table/discussion|plugins/table/discussion]]. > > -- [[AlexandreDupas]] + +>> [applied|done]]