X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FDispatchType%2FChained.pm;h=8600ac083c8bf7ab51232a7716d7901a972791bc;hb=6ab73369947422004890abb05035c491b086283f;hp=49fad32e5b793de0154b9043005e77840a12804e;hpb=b9b89145c40b01ae04dc483f4f29c02cf08725be;p=catagits%2FCatalyst-Runtime.git diff --git a/lib/Catalyst/DispatchType/Chained.pm b/lib/Catalyst/DispatchType/Chained.pm index 49fad32..8600ac0 100644 --- a/lib/Catalyst/DispatchType/Chained.pm +++ b/lib/Catalyst/DispatchType/Chained.pm @@ -86,7 +86,7 @@ sub list { my $has_unattached_actions; my $unattached_actions = Text::SimpleTable->new( - [ 35, 'Private' ], [ 36, 'Missing parent' ], + [ 35, 'Private' ], [ $column_width, 'Missing parent' ], ); ENDPOINT: foreach my $endpoint ( @@ -112,7 +112,7 @@ sub list { } if ($parent ne '/') { $has_unattached_actions = 1; - $unattached_actions->row('/'.$parents[0]->reverse, $parent); + $unattached_actions->row('/' . ($parents[0] || $endpoint)->reverse, $parent); next ENDPOINT; } my @rows; @@ -127,7 +127,7 @@ sub list { push(@rows, [ '', $name ]); } push(@rows, [ '', (@rows ? "=> " : '')."/${endpoint}" ]); - $rows[0][0] = join('/', '', @parts); + $rows[0][0] = join('/', '', @parts) || '/'; $paths->row(@$_) for @rows; } @@ -329,7 +329,9 @@ sub uri_for_action { if (my $cap = $curr->attributes->{CaptureArgs}) { return undef unless @captures >= $cap->[0]; # not enough captures if ($cap->[0]) { - unshift(@parts, splice(@captures, -$cap->[0])); + unshift(@parts, + map { s/([^A-Za-z0-9\-_.!~*'()])/$URI::Escape::escapes{$1}/go; $_; } + splice(@captures, -$cap->[0])); } } if (my $pp = $curr->attributes->{PartPath}) { @@ -345,7 +347,7 @@ sub uri_for_action { return undef if @captures; # fail for too many captures return join('/', '', @parts); - + } =head2 $c->expand_action($action)