From: Matt S Trout Date: Wed, 31 May 2006 01:02:36 +0000 (+0000) Subject: minor Base.pm refac X-Git-Tag: 5.7099_04~559 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Runtime.git;a=commitdiff_plain;h=d030cb977237ba7fa728eb00ab9c679388af3281 minor Base.pm refac --- diff --git a/lib/Catalyst/Base.pm b/lib/Catalyst/Base.pm index c4a6dc7..0671838 100644 --- a/lib/Catalyst/Base.pm +++ b/lib/Catalyst/Base.pm @@ -166,7 +166,9 @@ sub create_action { sub _parse_attrs { my ( $self, $c, $name, @attrs ) = @_; - my %attributes; + + my %raw_attributes; + foreach my $attr (@attrs) { # Parse out :Foo(bar) into Foo => bar etc (and arrayify) @@ -177,14 +179,25 @@ sub _parse_attrs { if ( defined $value ) { ( $value =~ s/^'(.*)'$/$1/ ) || ( $value =~ s/^"(.*)"/$1/ ); } + push( @{ $raw_attributes{$key} }, $value ); + } + } + + my %final_attributes; + + foreach my $key (keys %raw_attributes) { + + foreach my $value (@{$raw_attributes{$key}}) { + my $meth = "_parse_${key}_attr"; if ( $self->can($meth) ) { ( $key, $value ) = $self->$meth( $c, $name, $value ); } - push( @{ $attributes{$key} }, $value ); + push( @{ $final_attributes{$key} }, $value ); } } - return \%attributes; + + return \%final_attributes; } sub _parse_Global_attr {