Changed ActionRole to ActionClass
[catagits/Catalyst-Runtime.git] / lib / Catalyst / DispatchType / Chained.pm
index 5ed6088..13453df 100644 (file)
@@ -203,7 +203,7 @@ sub recurse_match {
             if (my $capture_attr = $action->attributes->{CaptureArgs}) {
 
                 # Short-circuit if not enough remaining parts
-                next TRY_ACTION unless @parts >= $capture_attr->[0];
+                next TRY_ACTION unless @parts >= ($capture_attr->[0]||0);
 
                 my @captures;
                 my @parts = @parts; # localise
@@ -211,6 +211,9 @@ sub recurse_match {
                 # strip CaptureArgs into list
                 push(@captures, splice(@parts, 0, $capture_attr->[0]));
 
+                # check if the action may fit, depending on a given test by the app
+                if ($action->can('match_captures')) { next TRY_ACTION unless $action->match_captures($c, \@captures) }
+
                 # try the remaining parts against children of this action
                 my ($actions, $captures, $action_parts, $n_pathparts) = $self->recurse_match(
                                              $c, '/'.$action->reverse, \@parts
@@ -404,6 +407,7 @@ sub expand_action {
 }
 
 __PACKAGE__->meta->make_immutable;
+1;
 
 =head1 USAGE