X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Runtime.git;a=blobdiff_plain;f=lib%2FCatalyst%2FStats.pm;h=ba3de6817a8f395b8d9fd01e1806a2e1259a34b5;hp=9e2410803393d8fcdc04b6c5101eb4a783db094a;hb=10011c19cb6f294d1d16c1a1fb484614a7c5dcba;hpb=750d2587d042dd28eb0b3bbeda6707ba3bf4ae83 diff --git a/lib/Catalyst/Stats.pm b/lib/Catalyst/Stats.pm index 9e24108..ba3de68 100644 --- a/lib/Catalyst/Stats.pm +++ b/lib/Catalyst/Stats.pm @@ -3,6 +3,7 @@ package Catalyst::Stats; use Moose; use Time::HiRes qw/gettimeofday tv_interval/; use Text::SimpleTable (); +use Catalyst::Utils; use Tree::Simple qw/use_weak_refs/; use Tree::Simple::Visitor::FindByUID; @@ -10,7 +11,8 @@ has enable => (is => 'rw', required => 1, default => sub{ 1 }); has tree => ( is => 'ro', required => 1, - default => sub{ Tree::Simple->new({t => [gettimeofday]}) } + default => sub{ Tree::Simple->new({t => [gettimeofday]}) }, + handles => [qw/ accept traverse /], ); has stack => ( is => 'ro', @@ -87,9 +89,10 @@ sub elapsed { sub report { my $self = shift; - my $t = Text::SimpleTable->new( [ 62, 'Action' ], [ 9, 'Time' ] ); + my $column_width = Catalyst::Utils::term_width() - 9 - 13; + my $t = Text::SimpleTable->new( [ $column_width, 'Action' ], [ 9, 'Time' ] ); my @results; - $self->tree->traverse( + $self->traverse( sub { my $action = shift; my $stat = $action->getNodeValue; @@ -114,15 +117,10 @@ sub _get_uid { my $visitor = Tree::Simple::Visitor::FindByUID->new; $visitor->searchForUID($uid); - $self->tree->accept($visitor); + $self->accept($visitor); return $visitor->getResult; } -sub accept { - my $self = shift; - $self->{tree}->accept( @_ ); -} - sub addChild { my $self = shift; my $node = $_[ 0 ]; @@ -135,7 +133,7 @@ sub addChild { $stat->{ elapsed } =~ s{s$}{}; } - $self->{tree}->addChild( @_ ); + $self->tree->addChild( @_ ); } sub setNodeValue { @@ -148,17 +146,12 @@ sub setNodeValue { $stat->{ elapsed } =~ s{s$}{}; } - $self->{tree}->setNodeValue( @_ ); + $self->tree->setNodeValue( @_ ); } sub getNodeValue { my $self = shift; - $self->{tree}->getNodeValue( @_ )->{ t }; -} - -sub traverse { - my $self = shift; - $self->{tree}->traverse( @_ ); + $self->tree->getNodeValue( @_ )->{ t }; } no Moose; @@ -331,10 +324,10 @@ from the previous profiling point. The 'rollup' flag indicates whether the reported time is the rolled up time for the block, or the elapsed time from the previous profiling point. -=head1 COMPATABILITY METHODS +=head1 COMPATIBILITY METHODS Some components might expect the stats object to be a regular Tree::Simple object. -We've added some compatability methods to handle this scenario: +We've added some compatibility methods to handle this scenario: =head2 accept