Aion

 view release on metacpan or  search on metacpan

t/aion/pleroma.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::Pleroma - контейнер эонов
# 
# # SYNOPSIS
# 
subtest 'SYNOPSIS' => sub { 
use Aion::Pleroma;

my $pleroma = Aion::Pleroma->new;

local ($::_g0 = do {$pleroma->get('user')}, $::_e0 = do {undef}); ::ok defined($::_g0) == defined($::_e0) && $::_g0 eq $::_e0, '$pleroma->get(\'user\') # -> undef' or ::diag ::_struct_diff($::_g0, $::_e0); undef $::_g0; undef $::_e0;
eval {$pleroma->resolve('user')}; local ($::_g0 = $@, $::_e0 = 'user is\'nt eon!'); ok defined($::_g0) && $::_g0 =~ /^${\quotemeta $::_e0}/, '$pleroma->resolve(\'user\') # @-> user is\'nt eon!' or ::diag ::_string_diff($::_g0, $::_e0, 1); undef $::_g...

# 
# # DESCRIPTION
# 
# Реализует паттерн контейнера зависимостей.
# 
# Эон создаётся при запросе из контейнера через метод `get` или `resolve`, либо через аспект `eon` как ленивый `default`. Ленивость можно отменить череÐ...
# 
# Контейнер можно получить с помощью `Aion->pleroma`.
# 
# Конфигурацию для создания эонов получает из конфига `PLEROMA` и файла аннотаций (создаётся пакетом `Aion::Annotation`). Файл аннотаций можно замениÑ...
# 
# # CONFIG
# 
# Настройки модуля, которые можно установить в `.env`:
# 
# * AION_PLEROMA_INI – файл аннотаций. По умолчанию `etc/annotation/eon.ann`.
# * AION_PLEROMA_AUTOWARE – подгружать модули автоматически, даже если они не прописаны в конфигурации. По умолчанию `1`.
# 
# # EONS FROM CONFIG
# 
# В `etc/*.yml` можно добавить ключ `aion.eon` с описанием дополнительных эонов. Это позволяет собирать эоны декларативно: задавать аргументы конс...
# 
# Опишем классы эонов.
# 
# Файл lib/Ex/Eon/Astronomer.pm:
#@> lib/Ex/Eon/Astronomer.pm
#>> package Ex::Eon::Astronomer;
#>> use strict; use warnings;
#>> 
#>> sub new { my ($class, $name, $telescope) = @_; bless { name => $name, telescope => $telescope, seen => [] }, $class }
#>> sub name      { $_[0]{name} }
#>> sub telescope { $_[0]{telescope} }
#>> sub seen      { $_[0]{seen} }
#>> sub observe   { my ($self, $body) = @_; push @{ $self->{seen} }, $body; $body }
#>> 
#>> 1;
#@< EOF
# 
# Файл lib/Ex/Eon/Planet.pm:
#@> lib/Ex/Eon/Planet.pm
#>> package Ex::Eon::Planet;
#>> use common::sense;
#>> use Aion;
#>> 
#>> has name       => (is => 'ro');
#>> has moons      => (is => 'ro', default => 0);



( run in 1.083 second using v1.01-cache-2.11-cpan-aadc1410aed )