From: Shawn M Moore Date: Wed, 16 Jul 2008 06:12:43 +0000 (+0000) Subject: Doc for the new trigger. Yikes. Save me perigrin! X-Git-Tag: 0.19~245 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=84357c9a1f427aafbc648fd4aa25b1b863823afd;p=gitmo%2FMouse.git Doc for the new trigger. Yikes. Save me perigrin! --- diff --git a/lib/Mouse.pm b/lib/Mouse.pm index 1f1e386..2df3ba1 100644 --- a/lib/Mouse.pm +++ b/lib/Mouse.pm @@ -336,11 +336,20 @@ L, such as regular expression and coderef, are not yet supported. Lets you automatically weaken any reference stored in the attribute. -=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. +=item trigger => CodeRef | HashRef + +Triggers are like method modifiers for setting attribute values. You can have +a "before" and an "after" trigger, each of which receive as arguments the instance, the new value, and the attribute metaclass. Historically, triggers have +only been "after" modifiers, so if you use a coderef for the C option, +it will maintain that compatibility. Like method modifiers, you can't really +affect the act of setting the attribute value, and the return values of the +modifiers are ignored. + +There's also an "around" trigger which you can use to change the value that +is being set on the attribute, or even prevent the attribute from being +updated. The around trigger receives as arguments a code reference to invoke +to set the attribute's value (which expects as arguments the instance and +the new value), the instance, the new value, and the attribute metaclass. =item builder => Str