MooseX::OmniTrigger

[email protected] ("Todd Lorenz")
Newsgroups perl.moose
Message-ID <[email protected]>
Hello, Moose dudes!

I’ve written a module that somebody might find useful: MooseX::OmniTrigger.

=head1 DESCRIPTION

Sometimes you want to know when your attributes' values change. No matter when! No matter how!

MooseX::OmniTrigger is an effort to provide Moose attributes with triggers that may to some folks behave more DWIMmily than standard Moose triggers, working around the documented feature/bug/caveat, "Triggers will only fire when you assign to the attribute, either in the constructor, or using the writer. Default and built values will not cause the trigger to be fired."

An omnitrigger fires any time its attribute's value is initialized, set, or cleared. This includes initialization with default and built values, lazy or no, and sets via native type accessors.

The callback is given as a subref, and receives four arguments: the object, the attribute name, the new value, and the old value. The new and old values are given as array refs. An empty array indicates *no* value -- the slot is uninitialized or has been cleared. Otherwise, the value will be the first (and only) array element.

Omnitriggers are recursion-proof. Firings beyond the first of a particular omnitrigger in the same call stack are quietly prevented.

=cut

So far as I’ve been able to find, there currently aren’t any other modules like this one, so I’d like to make it available on the CPAN. But first I’d like your feedback, if you’ve got the time to give it.

https://github.com/trlorenz/MooseX-OmniTrigger


Best regards,

Todd Lorenz
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.