Captures -> CapureArgs
[catagits/Catalyst-Runtime.git] / lib / Catalyst / ActionChain.pm
index 2bcc31f..6d16104 100644 (file)
@@ -48,9 +48,18 @@ actions in order.
 
 sub dispatch {
     my ( $self, $c ) = @_;
-    foreach my $action ( @{ $self->chain } ) {
+    my @captures = @{$c->req->captures||[]};
+    my @chain = @{ $self->chain };
+    my $last = pop(@chain);
+    foreach my $action ( @chain ) {
+        my @args;
+        if (my $cap = $action->attributes->{CaptureArgs}) {
+          @args = splice(@captures, 0, $cap->[0]);
+        }
+        local $c->request->{arguments} = \@args;
         $action->dispatch( $c );
     }
+    $last->dispatch( $c );
 }
 
 =head2 from_chain( \@actions )