Devel-Events-Generator-ClassPublisher

 view release on metacpan or  search on metacpan

lib/Devel/Events/Generator/ClassPublisher.pm  view on Meta::CPAN

#!/usr/bin/perl

package Devel::Events::Generator::ClassPublisher;
use Moose;

with qw/Devel::Events::Generator/;

use Class::Publisher;

our $VERSION = "0.01";

sub subscribe {
	my ( $self, $publisher, $event ) = @_;

	$event = '*' unless defined $event;

	$publisher->add_subscriber( $event, $self );
}

sub unsubscribe {
	my ( $self, $publisher, $event ) = @_;

	$publisher->delete_subscriber($event, $self);
}

sub update {
	my ( $self, $publisher, $type, @data ) = @_;
	$self->send_event( $type, publisher => $publisher, @data );
}

__PACKAGE__;

__END__

=pod

=head1 NAME

Devel::Events::Generator::ClassPublisher - Relay events from
L<Class::Publisher>

=head1 SYNOPSIS

	use Devel::Events::Generator::ClassPublisher;

	my $gen = Devel::Events::Generator::ClassPublisher->new(
		handler => $handler,
	);

	$gen->subscribe( $publisher, $event );

=head1 DESCRIPTION

This event generator can glue events from L<Class::Publisher> into the
L<Devel::Events> framework.

This is useful if you wish to place certain events like
L<Devel::Events::Objects>'s ones in a certain context by later analyzing the in
memory log.

=head1 METHODS

=over 4

=item subscribe $publisher, [ $event ]

=item unsubscribe $publisher, [ $event ]

These convenience methods are provided if you prefer calling

	$gen->subscribe($publisher, $event);

over

	$publisher->add_subscriber($event, $gen);

If C<$event> is omitted then all events are assumed.

=item update $publisher, $event, @args

Called by L<Class::Publisher/notify_subscribers>. Will raise an event with the
value:

	$event, publisher => $publisher, @args

A custom filter right after this generator to munge C<@args> into a key value



( run in 2.494 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )