NAME

Ryu::Observable - plus ça change

SYNOPSIS

 # Set initial value
 my $observed = Ryu::Observable->new(123)
   # and a callback for any changes
   ->subscribe(sub { print "New value, is now: $_\n" });
 # Basic numeric increment/decrement should trigger a notification
 ++$observed;
 # To assign a new value, use ->set_numeric or ->set_string
 $observed->set_numeric(88);

DESCRIPTION

Simple monitorable variables.

METHODS

Public API, such as it is.

as_string

Returns the string representation of this value.

as_number

Returns the numeric representation of this value.

new

Instantiates with the given value.

 my $observed = Ryu::Observable->new('whatever');

subscribe

Requests notifications when the value changes.

 my $observed = Ryu::Observable->new('whatever')
   ->subscribe(sub { print "New value - $_\n" });

unsubscribe

Removes an existing callback.

 my $code;
 my $observed = Ryu::Observable->new('whatever')
   ->subscribe($code = sub { print "New value - $_\n" })
   ->set_string('test')
   ->unsubscribe($code);

set

Sets the value to the given scalar, then notifies all subscribers (regardless of whether the value has changed or not).

value

Returns the raw value.

set_numeric

Applies a new numeric value, and notifies subscribers if the value is numerically different to the previous one (or if we had no previous value).

Returns $self.

set_string

Applies a new string value, and notifies subscribers if the value stringifies to a different value than the previous one (or if we had no previous value).

Returns $self.

source

Returns a Ryu::Source, which will emit each new value until the observable is destroyed.

METHODS - Internal

Don't use these.

notify_all

Notifies all currently-subscribed callbacks with the current value.

AUTHOR

Tom Molesworth <TEAM@cpan.org>

LICENSE

Copyright Tom Molesworth 2011-2019. Licensed under the same terms as Perl itself.