|
no warnings 'experimental::signatures' ;
our $VERSION = '0.03' ;
has 'target' => (
is => 'ro' ,
weak_ref => 1,
);
has 'callback' => (
is => 'ro' ,
);
has 'event' => (
is => 'ro' ,
);
around BUILDARGS => sub ( $orig , $class , %args ) {
croak "Need an event" unless $args { event };
croak "Need a callback" unless $args { callback };
croak "Need a target in target" unless $args { target };
return $class -> $orig ( %args )
};
sub notify( $self , @info ) {
$self ->callback->( @info )
}
sub unregister( $self ) {
$self ->target->remove_listener( $self )
if $self ->target;
undef $self ->{target};
}
sub DESTROY {
$_ [0]->unregister
}
1;
|