Change the API of generate_role to a hash so we can specify more
[gitmo/MooseX-Role-Parameterized.git] / lib / MooseX / Role / Parameterized / Meta / Role / Parameterizable.pm
index c72c405..d965575 100644 (file)
@@ -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 {