1package Text::Trac::Table; 2 3use strict; 4use warnings; 5use base qw(Text::Trac::BlockNode); 6 7our $VERSION = '0.24'; 8 9sub init { 10 my $self = shift; 11 $self->pattern(qr/^\|\|([^\|]*\|\|(?:[^\|]*\|\|)+)$/xms); 12 return $self; 13} 14 15sub parse { 16 my ( $self, $l ) = @_; 17 my $c = $self->{context}; 18 my $pattern = $self->pattern; 19 $l =~ $pattern or return $l; 20 21 $c->htmllines('<table>'); 22 23 $c->unshiftline; 24 while ( $c->hasnext and ( $c->nextline =~ $pattern ) ) { 25 my $l = $c->shiftline; 26 $l =~ s{ $self->{pattern} }{$1}xmsg; 27 $l = '<tr><td>' . join( 28 '</td><td>', 29 map { 30 $self->replace($_) # parse inline nodes 31 } split( /\|\|/, $l ) 32 ) . '</td></tr>'; 33 34 $c->htmllines($l); 35 } 36 37 $c->htmllines('</table>'); 38 39 return; 40} 41 421; 43