| Devel-Events documentation | Contained in the Devel-Events distribution. |
Devel::Events::Filter - A handler role that filters events and delegates to another.
package MyFilter;
use Moose;
with qw/Devel::Events::Filter/;
sub filter_event {
my ( $self, @event ) = @_;
return (map { ... } @event);
}
This role allows you to build event filters easily:
To use this role you must provide the filter_event method.
This role provides an optional handler attribute and a new_event method,
and does the Devel::Events::Handler role implicitly.
If a sub handler was provided then the filtered event will be delegated to it, but due to the usefulness of filters as debugging aids this is currently optional.
In the future this design choice might change.
A Devel::Events::Handler to delegate to.
Filters the event through filter_event.
If handler is set, delegates the filtered event to the handler. If not
no_handler_error is called instead.
This method is called if no handler is present. It is a stub, but in the future it may raise an error.
| Devel-Events documentation | Contained in the Devel-Events distribution. |
#!/usr/bin/perl package Devel::Events::Filter; use Moose::Role; with qw/Devel::Events::Handler/; requires 'filter_event'; has handler => ( # does => "Devel::Events::Handler", # we like duck typing isa => "Object", is => "rw", required => 1, ); sub new_event { my ( $self, @event ) = @_; if ( my @filtered = $self->filter_event( @event ) ) { $self->send_filtered_event(@filtered); } } sub send_filtered_event { my ( $self, @filtered ) = @_; $self->handler->new_event( @filtered ); } __PACKAGE__; __END__