Aion-Emitter

 view release on metacpan or  search on metacpan

lib/Aion/Emitter.pm  view on Meta::CPAN


# Путь к собранным из аннотаций методам
has ini => (is => 'ro', isa => Str, default => INI);

# Список слушателей
has event => (is => 'ro', isa => HashRef[ArrayRef[Dict[pkg => Str, sub => Str, line => Nat, nice => Option[Num], remark => Option[Str]]]], default => sub {
	my ($self) = @_;
	my %event = %{EVENT()};
	
	if(defined $self->ini and -e $self->ini) {
		open my $f, "<:utf8", $self->ini or die "Not open ${\$self->ini}";
		while(<$f>) {
			close($f), die "${\$self->ini}:$. corrupt!" unless /^([\w:]+)#(\w*),(\d+)=(?:(-?\d+(?:\.\d+)?)\s+)?([a-z][\w:]*(?:#[\w.:-]+)?)(?:\s+(.*?))??\s*$/i;
			my ($pkg, $sub, $line, $nice, $evt, $remark) = ($1, $2, $3, $4, $5, $6);
			push @{$event{$evt}}, {
				pkg => $pkg,
				sub => $sub,
				line => $line,
				$nice? (nice => $nice): (),
				$remark ne ''? (remark => $remark): (),
			};

t/aion/emitter.t  view on Meta::CPAN

use common::sense; use open qw/:std :utf8/;  use Carp qw//; use Cwd qw//; use File::Basename qw//; use File::Find qw//; use File::Slurper qw//; use File::Spec qw//; use File::Path qw//; use Scalar::Util qw//;  use Test::More 0.98;  use String::Diff q...
# # NAME
# 
# Aion::Emitter - диспетчер событий
# 
# # VERSION
# 
# 0.1.0
# 
# # SYNOPSIS
# 

t/aion/emitter/listeners-run.t  view on Meta::CPAN

use common::sense; use open qw/:std :utf8/;  use Carp qw//; use Cwd qw//; use File::Basename qw//; use File::Find qw//; use File::Slurper qw//; use File::Spec qw//; use File::Path qw//; use Scalar::Util qw//;  use Test::More 0.98;  use String::Diff q...
# 
# Aion::Emitter::ListenersRun - команда отображающая список слушателей
# 
# # SYNOPSIS
# 
# Файл etc/annotation/eon.ann:
#@> etc/annotation/eon.ann
#>> Aion::Emitter#new,1=Aion::Emitter
#@< EOF
# 



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