NAME
Reflex::Trait::Observed - Automatically watch Reflex objects.
VERSION
version 0.085
SYNOPSIS
# Not a complete program. This example comes from Reflex's main # synopsis.
has clock => (
isa => 'Reflex::Interval',
is => 'rw',
traits => [ 'Reflex::Trait::Observed' ],
setup => { interval => 1, auto_repeat => 1 },
);
DESCRIPTION
Reflex::Trait::Observed modifies a member to automatically observe any Reflex::Base object stored within it. In the SYNOPSIS, storing a Reflex::Interval in the clock() attribute allows the owner to watch the timer's events.
This trait is a bit of Moose-based syntactic sugar for Reflex::Base's more explict watch() and watch_role() methods.
setup
The "setup" option provides default constructor parameters for the attribute. In the above example, clock() will by default contain
Reflex::Interval->new(interval => 1, auto_repeat => 1);
In other words, it will emit the Reflex::Interval event ("tick") once per second until destroyed.
role
Attribute events are mapped to the owner's methods using Reflex's role-based callback convention. For example, Reflex will look for an on_clock_tick() method to handle "tick" events from an object with the 'clock" role.
The "role" option allows roles to be set or overridden. A watcher attribute's name is its default role.
Declarative Syntax
Reflex::Trait::Observed exports a declarative observes() function, which acts almost identically to Moose's has() but with a couple convenient defaults: The Observed trait is added, and the attribute is given "rw" access by default.
CAVEATS
The "setup" option is a work-around for unfortunate default timing. It will be deprecated if default can be made to work instead.
SEE ALSO
Reflex Reflex::Trait::EmitsOnChange
"ACKNOWLEDGEMENTS" in Reflex "ASSISTANCE" in Reflex "AUTHORS" in Reflex "BUGS" in Reflex "BUGS" in Reflex "CONTRIBUTORS" in Reflex "COPYRIGHT" in Reflex "LICENSE" in Reflex "TODO" in Reflex