X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FStats.pm;h=7f6058eb861257251edd7fc5c0aa851a81a8c7f6;hb=964bf130533c001789a80ef193f03d5c5f3817eb;hp=1987205fcad7268359fa85c30b8070dde22d17d3;hpb=bb48c5566ee0170fd913574d2393f381d214f86c;p=catagits%2FCatalyst-Runtime.git diff --git a/lib/Catalyst/Stats.pm b/lib/Catalyst/Stats.pm index 1987205..7f6058e 100644 --- a/lib/Catalyst/Stats.pm +++ b/lib/Catalyst/Stats.pm @@ -95,26 +95,35 @@ sub elapsed { sub report { my $self = shift; - my $column_width = Catalyst::Utils::term_width() - 9 - 13; - my $t = Text::SimpleTable->new( [ $column_width, 'Action' ], [ 9, 'Time' ] ); + my $t; my @results; - $self->traverse( - sub { - my $action = shift; - my $stat = $action->getNodeValue; - my @r = ( $action->getDepth, - ($stat->{action} || "") . - ($stat->{action} && $stat->{comment} ? " " : "") . ($stat->{comment} ? '- ' . $stat->{comment} : ""), - $stat->{elapsed}, - $stat->{action} ? 1 : 0, - ); - # Trim down any times >= 10 to avoid ugly Text::Simple line wrapping - my $elapsed = substr(sprintf("%f", $stat->{elapsed}), 0, 8) . "s"; - $t->row( ( q{ } x $r[0] ) . $r[1], - defined $r[2] ? $elapsed : '??'); - push(@results, \@r); - } - ); + + if (!wantarray) { + $t = Text::SimpleTable->new( + [ Catalyst::Utils::term_width() - 9 - 13, 'Action' ], + [ 9, 'Time' ], + ); + } + + $self->traverse(sub { + my $action = shift; + my $stat = $action->getNodeValue; + my @r = ( $action->getDepth, + ($stat->{action} || "") . + ($stat->{action} && $stat->{comment} ? " " : "") . ($stat->{comment} ? '- ' . $stat->{comment} : ""), + $stat->{elapsed}, + $stat->{action} ? 1 : 0, + ); + # Trim down any times >= 10 to avoid ugly Text::Simple line wrapping + my $elapsed = substr(sprintf("%f", $stat->{elapsed}), 0, 8) . "s"; + if ($t) { + $t->row( ( q{ } x $r[0] ) . $r[1], + defined $r[2] ? $elapsed : '??'); + } + else { + push @results, \@r; + } + }); return wantarray ? @results : $t->draw; }