X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FDispatcher.pm;h=a8fee010f537f959cff899bc4408ba3e514548c5;hb=97d6d2bd519e8905980c19b641737e93d6e006f2;hp=d92c7dce52b81ca292f0bab1aea97a4eeeb72fa8;hpb=d4a29ad2859eb2b659bdd1032bd00f431235487e;p=catagits%2FCatalyst-Runtime.git diff --git a/lib/Catalyst/Dispatcher.pm b/lib/Catalyst/Dispatcher.pm index d92c7dc..a8fee01 100644 --- a/lib/Catalyst/Dispatcher.pm +++ b/lib/Catalyst/Dispatcher.pm @@ -8,14 +8,15 @@ use Catalyst::Action; use Catalyst::ActionContainer; use Catalyst::DispatchType::Default; use Catalyst::DispatchType::Index; -use Text::ASCIITable; +use Text::SimpleTable; use Tree::Simple; use Tree::Simple::Visitor::FindByPath; # Stringify to class use overload '""' => sub { return ref shift }, fallback => 1; -__PACKAGE__->mk_accessors(qw/tree dispatch_types registered_dispatch_types/); +__PACKAGE__->mk_accessors(qw/tree dispatch_types registered_dispatch_types + method_action_class action_container_class/); # Preload these action types our @PRELOAD = qw/Path Regex/; @@ -126,7 +127,7 @@ qq/Couldn't forward to command "$command". Invalid action or component./; my $method = shift || 'process'; if ( my $code = $class->can($method) ) { - my $action = Catalyst::Action->new( + my $action = $self->method_action_class->new( { name => $method, code => $code, @@ -326,6 +327,8 @@ sub setup_actions { $self->dispatch_types( [] ); $self->registered_dispatch_types( {} ); + $self->method_action_class( 'Catalyst::Action' ); + $self->action_container_class( 'Catalyst::ActionContainer' ); # Preload action types for my $type (@PRELOAD) { @@ -359,11 +362,10 @@ sub setup_actions { return unless $c->debug; - my $privates = Text::ASCIITable->new; - $privates->setCols( 'Private', 'Class' ); - $privates->setColWidth( 'Private', 36, 1 ); - $privates->setColWidth( 'Class', 37, 1 ); + my $privates + = Text::SimpleTable->new( [ 36, 'Private' ], [ 37, 'Class' ] ); + my $has_private = 0; my $walker = sub { my ( $walker, $parent, $prefix ) = @_; $prefix .= $parent->getNodeValue || ''; @@ -375,7 +377,8 @@ sub setup_actions { next if ( ( $action =~ /^_.*/ ) && ( !$c->config->{show_internal_actions} ) ); - $privates->addRow( "$prefix$action", $action_obj->class ); + $privates->row( "$prefix$action", $action_obj->class ); + $has_private = 1; } $walker->( $walker, $_, $prefix ) for $parent->getAllChildren; @@ -383,7 +386,7 @@ sub setup_actions { $walker->( $walker, $self->tree, '' ); $c->log->debug( "Loaded Private actions:\n" . $privates->draw ) - if ( @{ $privates->{tbl_rows} } ); + if ( $has_private ); # List all public actions $_->list($c) for @{ $self->dispatch_types };