package MouseX::POE::Meta::Trait; BEGIN { $MouseX::POE::Meta::Trait::VERSION = '0.214'; } # ABSTRACT: There be dragons here. use Mouse::Role; use MouseX::POE::Meta::Method::State; has events => ( reader => 'get_events', traits => ['Array'], isa => 'ArrayRef', auto_deref => 1, lazy_build => 1, builder => 'default_events', handles => { 'add_event' => ['push'] }, ); sub default_events { return []; } sub get_state_method_name { my ( $self, $name ) = @_; return $name if $self->has_method($name); return undef; } sub add_state_method { my ( $self, $name, $method ) = @_; if ( $self->has_method($name) ) { my $full_name = $self->get_method($name)->fully_qualified_name; confess "Cannot add a state method ($name) if a local method ($full_name) is already present"; } $self->add_event($name); $self->add_method( $name => $method ); } 1; __END__ =pod =head1 NAME MouseX::POE::Meta::Trait - There be dragons here. =head1 VERSION version 0.214 =begin comment =end comment after add_role => sub { my ( $self, $role ) = @_; if ( $role->isa("MouseX::POE::Meta::Role") ) { $self->add_event( $role->get_events ); } }; =for Pod::Coverage default_events get_state_method_name add_state_method 1; =head1 AUTHORS =over 4 =item * Chris Prather =item * Ash Berlin =item * Chris Williams =item * Yuval (nothingmuch) Kogman =item * Torsten Raudssus L =back =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2010 by Chris Prather, Ash Berlin, Chris Williams, Yuval Kogman, Torsten Raudssus. 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