Revision history for Mouse
-0.06
+0.06 Thu Jul 23 02:10:07 2008
+ * Deprecating before/after/around triggers! Switch back to coderef +
+ whatever you used to do. Moose is have it implemented it as an extension
+ trait.
+
* Mouse
- updated trigger doc (thanks perigrin)
+ - which will not see CPAN :( sorry perigrin!
* Mouse::Meta::Class
- add a make_immutable method which does nothing(!), for even more
Lets you automatically weaken any reference stored in the attribute.
-=item trigger => CodeRef | HashRef
-
-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.
-
-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.
+=item trigger => CodeRef
+
+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.
+
+Mouse 0.05 supported more complex triggers, but this behavior is now deprecated.
=item builder => Str
after => $args->{trigger},
};
}
+ elsif (ref($args->{trigger}) eq 'HASH') {
+ Carp::carp "HASH-based form of trigger is deprecated. Please switch back to using the coderef form of trigger.";
+ }
- confess "Trigger must be a CODE or HASH ref on attribute ($name)"
+ confess "Trigger must be a CODE ref on attribute ($name)"
if ref($args->{trigger}) ne 'HASH';
}