X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMouse%2FMeta%2FRole.pm;h=f4bf289a0e48c3b0121ea17d1c5e264afdc8325e;hb=724c77c0fd7afe685c69dc1abcfc8b1a79eefae3;hp=3c7aff1288849bf3acc3c3a23a150de6b21d906a;hpb=274b6ccef8d4b5faa062ca38d7207617fc1cd51f;p=gitmo%2FMouse.git diff --git a/lib/Mouse/Meta/Role.pm b/lib/Mouse/Meta/Role.pm index 3c7aff1..f4bf289 100644 --- a/lib/Mouse/Meta/Role.pm +++ b/lib/Mouse/Meta/Role.pm @@ -37,23 +37,23 @@ sub name { $_[0]->{name} } sub add_attribute { my $self = shift; my $name = shift; - $self->{attributes}->{$name} = [ @_ ]; + my $spec = shift; + $self->{attributes}->{$name} = $spec; } sub has_attribute { exists $_[0]->{attributes}->{$_[1]} } sub get_attribute_list { keys %{ $_[0]->{attributes} } } -sub get_attribute { @{ $_->[0]->{attributes}->{$_[1]} || [] } } +sub get_attribute { $_[0]->{attributes}->{$_[1]} } sub apply { my $self = shift; my $class = shift; - my $pkg = $class->name; for my $name ($self->get_attribute_list) { - my @spec = $self->get_attribute($name); - Mouse::Meta::Attribute->create($pkg, $name, @spec); + next if $class->has_attribute($name); + my $spec = $self->get_attribute($name); + Mouse::Meta::Attribute->create($class, $name, %$spec); } - } 1;