package Hubot::Listener; { $Hubot::Listener::VERSION = '0.1.5'; } use Moose; use namespace::autoclean; use Hubot::Response; has 'robot' => ( is => 'ro', isa => 'Hubot::Robot', ); has 'matcher' => ( traits => ['Code'], is => 'rw', isa => 'CodeRef', handles => { matching => 'execute', }, ); has 'callback' => ( traits => ['Code'], is => 'rw', isa => 'CodeRef', handles => { cb => 'execute', }, ); sub call { my ( $self, $message ) = @_; if ( my @match = $self->matching($message) ) { $self->cb( new Hubot::Response( robot => $self->robot, message => $message, match => \@match, ) ); return 1; } else { return 0; } } __PACKAGE__->meta->make_immutable; 1; =pod =encoding utf-8 =head1 NAME Hubot::Listener =head1 SYNOPSIS Nope. =head1 DESCRIPTION base class of L try to match all registered regex then execute callback with matching result and input messages. =head1 SEE ALSO L =head1 AUTHOR Hyungsuk Hong =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2012 by Hyungsuk Hong. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut