On role apply, apply all method modifiers
Shawn M Moore [Wed, 30 Jul 2008 15:31:10 +0000 (15:31 +0000)]
lib/Mouse/Meta/Role.pm

index 79f3b7f..07203c3 100644 (file)
@@ -54,6 +54,17 @@ sub apply {
         my $spec = $self->get_attribute($name);
         Mouse::Meta::Attribute->create($class, $name, %$spec);
     }
+
+    for my $modifier_type (qw/before after around/) {
+        my $add_method = "add_${modifier_type}_method_modifier";
+        my $modified = $self->{"${modifier_type}_method_modifiers"};
+
+        for my $method_name (keys %$modified) {
+            for my $code (@{ $modified->{$method_name} }) {
+                $class->$add_method($method_name => $code);
+            }
+        }
+    }
 }
 
 for my $modifier_type (qw/before after around/) {