X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FActionChain.pm;h=9ef1513686f60d4a4b37857b0a33d1ecf1275cfc;hb=e16a6c4e6c4d49e73b5286b3186616af14f3f554;hp=6b08e2b107eded5c2eb8e25dca79b3737453cfa2;hpb=ee1ac3770d375006a96f1fba8308c1294e82e633;p=catagits%2FCatalyst-Runtime.git diff --git a/lib/Catalyst/ActionChain.pm b/lib/Catalyst/ActionChain.pm index 6b08e2b..9ef1513 100644 --- a/lib/Catalyst/ActionChain.pm +++ b/lib/Catalyst/ActionChain.pm @@ -3,20 +3,6 @@ package Catalyst::ActionChain; use strict; use base qw/Catalyst::Action/; -__PACKAGE__->mk_accessors(qw/chain/); - -use overload ( - - # Stringify to reverse for debug output etc. - q{""} => sub { shift->{reverse} }, - - # Codulate to execute to invoke the encapsulated action coderef - '&{}' => sub { my $self = shift; sub { $self->execute(@_); }; }, - - # Make general $stuff still work - fallback => 1, - -); =head1 NAME @@ -24,7 +10,7 @@ Catalyst::ActionChain - Chain of Catalyst Actions =head1 SYNOPSIS -See L. +See L for more info about Chained actions. =head1 DESCRIPTION @@ -32,19 +18,23 @@ This class represents a chain of Catalyst Actions. It behaves exactly like the action at the *end* of the chain except on dispatch it will execute all the actions in the chain in order. -=head1 METHODS +=cut -=head2 chain +__PACKAGE__->mk_accessors(qw/chain/); -Accessor for the action chain; will be an arrayref of the Catalyst::Action -objects encapsulated by this chain. +use overload ( -=head2 dispatch( $c ) + # Stringify to reverse for debug output etc. + q{""} => sub { shift->{reverse} }, -Dispatch this action chain against a context; will dispatch the encapsulated -actions in order. + # Codulate to execute to invoke the encapsulated action coderef + '&{}' => sub { my $self = shift; sub { $self->execute(@_); }; }, + + # Make general $stuff still work + fallback => 1, + +); -=cut sub dispatch { my ( $self, $c ) = @_; @@ -53,7 +43,7 @@ sub dispatch { my $last = pop(@chain); foreach my $action ( @chain ) { my @args; - if (my $cap = $action->attributes->{Captures}) { + if (my $cap = $action->attributes->{CaptureArgs}) { @args = splice(@captures, 0, $cap->[0]); } local $c->request->{arguments} = \@args; @@ -62,22 +52,36 @@ sub dispatch { $last->dispatch( $c ); } -=head2 from_chain( \@actions ) - -Takes a list of Catalyst::Action objects and constructs and returns a -Catalyst::ActionChain object representing a chain of these actions - -=cut - sub from_chain { my ( $self, $actions ) = @_; my $final = $actions->[-1]; return $self->new({ %$final, chain => $actions }); } -=head1 AUTHOR +1; + +__END__ + +=head1 METHODS -Matt S. Trout +=head2 chain + +Accessor for the action chain; will be an arrayref of the Catalyst::Action +objects encapsulated by this chain. + +=head2 dispatch( $c ) + +Dispatch this action chain against a context; will dispatch the encapsulated +actions in order. + +=head2 from_chain( \@actions ) + +Takes a list of Catalyst::Action objects and constructs and returns a +Catalyst::ActionChain object representing a chain of these actions + +=head1 AUTHORS + +Catalyst Contributors, see Catalyst.pm =head1 COPYRIGHT @@ -85,5 +89,3 @@ This program is free software, you can redistribute it and/or modify it under the same terms as Perl itself. =cut - -1;