X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Runtime.git;a=blobdiff_plain;f=lib%2FCatalyst%2FDispatchType%2FPath.pm;h=ceea17b59a14cad6ca7deed464df7c62ce81a327;hp=98ef3034a7ed981e001563ca375727bd5ca1384b;hb=4082e67814e85bc9820e56eb38e5e21511c0a5f8;hpb=61a9002d77ce79bc038b3ec6212e275015801594 diff --git a/lib/Catalyst/DispatchType/Path.pm b/lib/Catalyst/DispatchType/Path.pm index 98ef303..ceea17b 100644 --- a/lib/Catalyst/DispatchType/Path.pm +++ b/lib/Catalyst/DispatchType/Path.pm @@ -3,6 +3,7 @@ package Catalyst::DispatchType::Path; use strict; use base qw/Catalyst::DispatchType/; use Text::SimpleTable; +use URI; =head1 NAME @@ -41,6 +42,7 @@ sub match { $path ||= '/'; if ( my $action = $self->{paths}->{$path} ) { + return 0 unless $action->match($c); $c->req->action($path); $c->req->match($path); $c->action($action); @@ -64,7 +66,7 @@ sub register { foreach my $r ( @{ $attrs->{Path} || [] } ) { unless ($r) { $r = $action->namespace; - $r = '/' unless $r; + $r = '/' unless length $r; } elsif ( $r !~ m!^/! ) { # It's a relative path $r = $action->namespace . "/$r"; @@ -94,7 +96,8 @@ sub register { sub register_path { my ( $self, $c, $path, $action ) = @_; $path =~ s!^/!!; - $path = '/' unless $path; + $path = '/' unless length $path; + $path = URI->new($path)->canonical; $self->{paths}{$path} = $action; }