We want a parameter_metaclass attribute; each role application will get an instance...
Shawn M Moore [Sun, 9 Nov 2008 03:02:19 +0000 (03:02 +0000)]
lib/MooseX/Role/Parameterized/Meta/Role.pm

index 60c6eb7..0ff6186 100644 (file)
@@ -5,7 +5,21 @@ extends 'Moose::Meta::Role';
 
 use MooseX::Role::Parameterized::Parameters;
 
-sub parameter_class { 'MooseX::Role::Parameterized::Parameters' }
+has parameter_metaclass => (
+    is      => 'ro',
+    isa     => 'Moose::Meta::Class',
+    lazy    => 1,
+    default => sub {
+        Moose::Meta::Class->create_anon_class(
+            superclasses => ['MooseX::Role::Parameterized::Parameters'],
+        );
+    },
+);
+
+sub add_parameter {
+    my $self = shift;
+    $self->parameter_metaclass->add_attribute(@_);
+}
 
 __PACKAGE__->meta->make_immutable;
 no Moose;