method modifiers for roles
Matt S Trout [Wed, 4 Apr 2012 04:20:23 +0000 (04:20 +0000)]
Changes
lib/Moo/HandleMoose.pm
xt/moose-method-modifiers.t

diff --git a/Changes b/Changes
index 7884efb..c7143a0 100644 (file)
--- a/Changes
+++ b/Changes
@@ -2,6 +2,7 @@
     to be treated as Moose classes/roles. Supported so far:
     - Some level of attributes and methods for both classes and roles
     - Required methods in roles
+    - Method modifiers in roles (they're already applied in classes)
 
 0.009014 - 2012-03-29
   - Split Role::Tiny out into its own dist
index 5d5c522..97b6c49 100644 (file)
@@ -46,7 +46,12 @@ sub inject_real_metaclass_for {
     }
   }
   if ($am_role) {
-    $meta->add_required_methods(@{$Moo::Role::INFO{$name}{requires}});
+    my $info = $Moo::Role::INFO{$name};
+    $meta->add_required_methods(@{$info->{requires}});
+    foreach my $modifier (@{$info->{modifiers}}) {
+      my ($type, @args) = @$modifier;
+      $meta->${\"add_${type}_method_modifier"}(@args);
+    }
   } else {
     foreach my $attr (@attrs) {
       foreach my $method (@{$attr->associated_methods}) {
index 5a6b796..2d49a8b 100644 (file)
@@ -16,7 +16,7 @@ use Moo::HandleMoose;
    around foo => sub {
       my ($orig, $self, @rest) = @_;
       $self->$orig(@rest);
-      $after_ran = 1;
+      $around_ran = 1;
    };
 
    package Bar;