X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FDispatcher.pm;h=b65c22ada8258bbc4c1b3f3fb104c72ea646e58a;hb=cd677e12b127597abb93b76560c8cb23a47d5da6;hp=94dd80d97dd04064bcf91625d021526be9032465;hpb=3b2ed58088aa6b714f24cb4c76484c7dda8cfe30;p=catagits%2FCatalyst-Runtime.git diff --git a/lib/Catalyst/Dispatcher.pm b/lib/Catalyst/Dispatcher.pm index 94dd80d..b65c22a 100644 --- a/lib/Catalyst/Dispatcher.pm +++ b/lib/Catalyst/Dispatcher.pm @@ -4,7 +4,6 @@ use strict; use base 'Class::Data::Inheritable'; use Memoize; use Text::ASCIITable; -use Text::ASCIITable::Wrap 'wrap'; use Tree::Simple; use Tree::Simple::Visitor::FindByPath; @@ -61,14 +60,17 @@ sub dispatch { } # Execute the auto chain + my $auto = 0; for my $auto ( @{ $c->get_action( 'auto', $namespace ) } ) { $c->execute( @{ $auto->[0] } ); return if scalar @{ $c->error }; last unless $c->state; + $auto++; } # Execute the action or last default - if ( ( my $action = $c->req->action ) && $c->state ) { + my $mkay = $auto ? $c->state ? 1 : 0 : 1; + if ( ( my $action = $c->req->action ) && $mkay ) { if ( my $result = @{ $c->get_action( $action, $default ) }[-1] ) { $c->execute( @{ $result->[0] } ); } @@ -114,12 +116,13 @@ sub forward { if ( $command =~ /^\// ) { $command =~ /^(.*)\/(\w+)$/; $namespace = $1 || '/'; + $namespace = s/^\/// if $namespace ne '/'; $command = $2; } else { $namespace = _class2prefix($caller) || '/' } my $results = $c->get_action( $command, $namespace ); unless ( @{$results} ) { - my $class = $command; + my $class = $command || ''; if ( $class =~ /[^\w\:]/ ) { my $error = qq/Couldn't forward to "$class"/; $c->error($error); @@ -132,7 +135,7 @@ sub forward { $results = [ [ [ $class, $code ] ] ]; } else { - my $error = qq/Couldn't forward to "$class->$method"/; + my $error = qq/Couldn't forward to "$class"/; $c->error($error); $c->log->debug($error) if $c->debug; @@ -236,9 +239,10 @@ sub set_action { } if ( $flags{private} && ( keys %flags > 1 ) ) { - $c->log->error( 'Bad action definition "' + $c->log->debug( 'Bad action definition "' . join( ' ', @{$attrs} ) - . qq/" for "$namespace->$method"/ ); + . qq/" for "$namespace->$method"/ ) + if $c->debug; return; } return unless keys %flags; @@ -342,8 +346,7 @@ sub setup_actions { my $uid = $parent->getUID; for my $action ( keys %{ $actions->{private}->{$uid} } ) { my ( $class, $code ) = @{ $actions->{private}->{$uid}->{$action} }; - $privates->addRow( wrap( "$prefix$action", 36 ), - wrap( $class, 37 ) ); + $privates->addRow( "$prefix$action", $class, 37 ); } $walker->( $walker, $_, $prefix ) for $parent->getAllChildren; }; @@ -358,7 +361,7 @@ sub setup_actions { my ( $class, $code ) = @{ $actions->{plain}->{$plain} }; my $reverse = $self->actions->{reverse}->{$code}; $reverse = $reverse ? "/$reverse" : $code; - $publics->addRow( wrap( "/$plain", 36 ), wrap( $reverse, 37 ) ); + $publics->addRow( "/$plain", $reverse ); } $self->log->debug( 'Loaded public actions', $publics->draw ) if ( @{ $publics->{tbl_rows} } && $self->debug ); @@ -370,7 +373,7 @@ sub setup_actions { my ( $class, $code ) = @{ $actions->{regex}->{$regex} }; my $reverse = $self->actions->{reverse}->{$code}; $reverse = $reverse ? "/$reverse" : $code; - $regexes->addRow( wrap( $regex, 36 ), wrap( $reverse, 37 ) ); + $regexes->addRow( $regex, $reverse ); } $self->log->debug( 'Loaded regex actions', $regexes->draw ) if ( @{ $regexes->{tbl_rows} } && $self->debug );