X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FAction.pm;h=1649f35f725b2acb5da6d1b28fc18556a53b414e;hb=4dcffe42e2dc781d2942bd4935cb1d3c96ce6464;hp=0eb99424eed9222274f112c9504d47736aee0bb1;hpb=05b47f2e6357bc7f1622e6b2cf730ad5bbeb993f;p=catagits%2FCatalyst-Runtime.git diff --git a/lib/Catalyst/Action.pm b/lib/Catalyst/Action.pm index 0eb9942..1649f35 100644 --- a/lib/Catalyst/Action.pm +++ b/lib/Catalyst/Action.pm @@ -38,7 +38,6 @@ use overload ( '&{}' => sub { my $self = shift; sub { $self->execute(@_); }; }, # Which action takes precedence - 'cmp' => 'compare', '<=>' => 'compare', # Make general $stuff still work @@ -73,20 +72,16 @@ sub match { return scalar( @{ $c->req->args } ) == $args; } -sub sort_order { - my $self = shift; - - my ($args) = @{ $self->attributes->{Args} || [] }; - - return $args if looks_like_number($args); - - return ~0; -} - sub compare { my ($a1, $a2) = @_; - return $a1->sort_order <=> $a2->sort_order; + my ($a1_args) = @{ $a1->attributes->{Args} || [] }; + my ($a2_args) = @{ $a2->attributes->{Args} || [] }; + + $_ = looks_like_number($_) ? $_ : ~0 + for $a1_args, $a2_args; + + return $a1_args <=> $a2_args; } __PACKAGE__->meta->make_immutable; @@ -124,6 +119,13 @@ context and arguments Check Args attribute, and makes sure number of args matches the setting. Always returns true if Args is omitted. +=head2 compare + +Compares 2 actions based on the value of the C attribute, with no C +having the highest precedence. + +C<< <=> >> is overloaded to use this method. + =head2 namespace Returns the private namespace this action lives in.