Remove blessed from Mouse::Object because it's not used
[gitmo/Mouse.git] / lib / Mouse.pm
index 92ee9af..71640fc 100644 (file)
@@ -3,13 +3,12 @@ package Mouse;
 use strict;
 use warnings;
 
-our $VERSION = '0.06';
+our $VERSION = '0.07';
 use 5.006;
 
 use Sub::Exporter;
 use Carp 'confess';
 use Scalar::Util 'blessed';
-use Class::Method::Modifiers ();
 
 use Mouse::Meta::Attribute;
 use Mouse::Meta::Class;
@@ -61,15 +60,42 @@ do {
         },
 
         before => sub {
-            return \&Class::Method::Modifiers::before;
+            my $caller = $CALLER;
+
+            return sub {
+                my $code = pop;
+                my $class = $caller->meta;
+
+                for (@_) {
+                    $class->add_before_method_modifier($_ => $code);
+                }
+            };
         },
 
         after => sub {
-            return \&Class::Method::Modifiers::after;
+            my $caller = $CALLER;
+
+            return sub {
+                my $code = pop;
+                my $class = $caller->meta;
+
+                for (@_) {
+                    $class->add_after_method_modifier($_ => $code);
+                }
+            };
         },
 
         around => sub {
-            return \&Class::Method::Modifiers::around;
+            my $caller = $CALLER;
+
+            return sub {
+                my $code = pop;
+                my $class = $caller->meta;
+
+                for (@_) {
+                    $class->add_around_method_modifier($_ => $code);
+                }
+            };
         },
 
         with => sub {
@@ -340,20 +366,11 @@ L</handles>, such as regular expression and coderef, are not yet supported.
 
 Lets you automatically weaken any reference stored in the attribute.
 
-=item trigger => CodeRef | HashRef
+=item trigger => CodeRef
 
-Historically, triggers have been like "after" method modifiers. They allowed
-you to run code after your attribute had been set. Passing a coderef to the
-C<trigger> option still works this way.
+Any time the attribute's value is set (either through the accessor or the constructor), the trigger is called on it. The trigger receives as arguments the instance, the new value, and the attribute instance.
 
-By passing a hashref to C<trigger>, you also get "before" and "around"
-triggers. The "before" and "after" triggers don't affect the act of setting
-the attribute value, and their return values are ignored. The "around" trigger
-can be used to change the value that is being set on the attribute, or prevent
-the attribute from being updated altogether. The "around" trigger's arguments
-are a code reference to set the attribute's value (this coderef expects the
-instance and the new value), the instance, the new value, and the attribute
-metaclass.
+Mouse 0.05 supported more complex triggers, but this behavior is now deprecated.
 
 =item builder => Str