package Text::Trac::Table; use strict; use base qw(Text::Trac::BlockNode); sub init { my $self = shift; $self->pattern(qr/^\|\|([^\|]*\|\|(?:[^\|]*\|\|)+)$/xms); return $self; } sub parse { my ( $self, $l ) = @_; my $c = $self->{context}; my $pattern = $self->pattern; $l =~ $pattern or return $l; $c->htmllines(''); $c->unshiftline; while( $c->hasnext and ($c->nextline =~ $pattern ) ){ my $l = $c->shiftline; $l =~ s{ $self->{pattern} }{$1}xmsg; $l = ""; $c->htmllines($l); } $c->htmllines('
" . join( "", map { $self->replace($_) # parse inline nodes } split(/\|\|/, $l) ) . "
'); return; } 1;