X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Runtime.git;a=blobdiff_plain;f=lib%2FCatalyst%2FAction.pm;h=b0f60cbb202ef80625dd8a0a40ebca234db0528e;hp=97b9235a4f978abacefa73fa2069725cac69acd6;hb=cbe555e8935736ebb018aa19ef4b44051b429977;hpb=cf1fb734a3ab53b536aac54bcb3d382c845b46a8 diff --git a/lib/Catalyst/Action.pm b/lib/Catalyst/Action.pm index 97b9235..b0f60cb 100644 --- a/lib/Catalyst/Action.pm +++ b/lib/Catalyst/Action.pm @@ -73,20 +73,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,13 +120,10 @@ context and arguments Check Args attribute, and makes sure number of args matches the setting. Always returns true if Args is omitted. -=head2 sort_order - -Returns the value of the C attribute, or C<~0> if it has no value. - =head2 compare -Returns C<< $a->sort_order <=> $b->sort_order >> . +Compares 2 actions based on the value of the C attribute, with no C +having the highest precedence. =head2 namespace