Aion-Emitter
view release on metacpan or search on metacpan
lib/Aion/Emitter/ListenersRun.pm view on Meta::CPAN
package Aion::Emitter::ListenersRun;
# СпиÑок ÑлÑÑаÑелей
use common::sense;
use List::Util qw/pairmap max/;
use Aion::Format qw/printcolor/;
use Aion;
with qw/Aion::Run/;
# ÐаÑка Ð´Ð»Ñ ÑилÑÑÑа по командам
has mask => (is => 'ro', isa => Maybe[Str], arg => 1);
# ÐмиÑÑеÑ
has emitter => (is => 'ro', isa => 'Aion::Emitter', eon => 1);
#@run emit:listeners âList of listenersâ
sub list {
my ($self) = @_;
my @listeners = sort { $a->{evt} eq $b->{evt}? $a->{nice} <=> $b->{nice}: $a->{evt} cmp $b->{evt} }
pairmap { my $evt = $a; map { +{ %$_, evt => $evt, act => "$_->{pkg}#$_->{sub}", nice => 0+$_->{nice} } } @$b }
%{$self->emitter->event};
@listeners = grep { /$self->{mask}/ } @listeners if $self->mask ne "";
my $evtlen = max map length $_->{evt}, @listeners;
my $actlen = max map length $_->{act}, @listeners;
my $nicelen = max map length $_->{nice}, @listeners;
for my $listener_bag (@listeners) {
printcolor "#{blue}%+${nicelen}s#r #green%-${evtlen}s #{red}%-${actlen}s #{bold black}%s#r\n", @$listener_bag{qw/nice evt act remark/};
}
}
1;
__END__
=encoding utf-8
( run in 1.495 second using v1.01-cache-2.11-cpan-140bd7fdf52 )