X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMooseX%2FRole%2FParameterized%2FMeta%2FRole%2FParameterizable.pm;h=d965575616eb80b86f06b9797d019c566507aa91;hb=1a8744bd532c206c08642902bdc8c473b09682c9;hp=c72c405c1f3bd659f0c184e27f7bbd54926df26d;hpb=874766ba6346e3e371f1cf4ffc559d0751109cb7;p=gitmo%2FMooseX-Role-Parameterized.git diff --git a/lib/MooseX/Role/Parameterized/Meta/Role/Parameterizable.pm b/lib/MooseX/Role/Parameterized/Meta/Role/Parameterizable.pm index c72c405..d965575 100644 --- a/lib/MooseX/Role/Parameterized/Meta/Role/Parameterizable.pm +++ b/lib/MooseX/Role/Parameterized/Meta/Role/Parameterizable.pm @@ -59,10 +59,12 @@ sub construct_parameters { } sub generate_role { - my $self = shift; + my $self = shift; + my %args = @_; - my $parameters = @_ == 1 ? shift - : $self->construct_parameters(@_); + my $parameters = blessed($args{parameters}) + ? $args{parameters} + : $self->construct_parameters(%{ $args{parameters} }); confess "A role generator is required to generate roles" unless $self->has_role_generator; @@ -81,12 +83,16 @@ sub generate_role { } sub apply { - my $self = shift; - my $class = shift; - my %args = @_; + my $self = shift; + my $consumer = shift; + my %args = @_; + + my $role = $self->generate_role( + consumer => $consumer, + parameters => \%args, + ); - my $role = $self->generate_role(%args); - $role->apply($class, %args); + $role->apply($consumer, %args); } sub apply_parameterizable_role {