X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FAction.pm;h=ce587ac95b808879e852fadcbd68431bd31b3a75;hb=a8762dd4f8ea1338b9b45ecf37c0107f2710d398;hp=0e132f518194f571333b35aa23cd09a2ad30d9ac;hpb=649fd1fa74ee22fb2f5220dbdcb25d02427034b2;p=catagits%2FCatalyst-Runtime.git diff --git a/lib/Catalyst/Action.pm b/lib/Catalyst/Action.pm index 0e132f5..ce587ac 100644 --- a/lib/Catalyst/Action.pm +++ b/lib/Catalyst/Action.pm @@ -10,8 +10,8 @@ use overload ( # Stringify to reverse for debug output etc. q{""} => sub { shift->{reverse} }, - # Codulate to encapsulated action coderef - '&{}' => sub { shift->{code} }, + # Codulate to execute to invoke the encapsulated action coderef + '&{}' => sub { my $self = shift; sub { $self->execute(@_); }; }, # Make general $stuff still work fallback => 1, @@ -46,18 +46,30 @@ Returns the class name of this action Returns a code reference to this action -=head2 execute( $c ) +=head2 dispatch( $c ) -Execute this action against a context +Dispatch this action against a context =cut -sub execute { # Execute ourselves against a context +sub dispatch { # Execute ourselves against a context my ( $self, $c ) = @_; local $c->namespace = $self->namespace; return $c->execute( $self->class, $self ); } +=head2 execute( $controller, $c, @args ) + +Execute this action's coderef against a given controller with a given +context and arguments + +=cut + +sub execute { + my $self = shift; + $self->{code}->(@_); +} + =head2 match( $c ) Check Args attribute, and makes sure number of args matches the setting. @@ -67,7 +79,7 @@ Check Args attribute, and makes sure number of args matches the setting. sub match { my ( $self, $c ) = @_; return 1 unless exists $self->attributes->{Args}; - return scalar(@{$c->req->args}) == $self->attributes->{Args}[0]; + return scalar( @{ $c->req->args } ) == $self->attributes->{Args}[0]; } =head2 namespace