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
# 
# Настройки модуля, которые можно установить в `.config.pm`:
# 
# * INI => 'etc/annotation/eon.ann' – файл аннотаций.
# * PLEROMA => {} – дополнительный набор эонов.
# * AUTOWARE => 1 – подгружать модули автоматически, даже если они не прописаны в конфигурации.
# 
# # FEATURES
# 
# ## ini
# 
# Файл с аннотациями.
# 
::done_testing; }; subtest 'ini' => sub { 
local ($::_g0 = do {Aion::Pleroma->new->ini}, $::_e0 = "etc/annotation/eon.ann"); ::ok $::_g0 eq $::_e0, 'Aion::Pleroma->new->ini # => etc/annotation/eon.ann' or ::diag ::_string_diff($::_g0, $::_e0); undef $::_g0; undef $::_e0;

# 
# ## pleroma
# 
# Конфигурация: ключ => 'класс#метод_класса'.
# 
# Файл lib/Ex/Eon/AnimalEon.pm:
#@> lib/Ex/Eon/AnimalEon.pm
#>> package Ex::Eon::AnimalEon;
#>> #@eon
#>> 
#>> use common::sense;
#>> 
#>> use Aion;
#>>  
#>> has role => (is => 'ro');
#>> 
#>> #@eon ex.cat
#>> sub cat { __PACKAGE__->new(role => 'cat') }



( run in 0.611 second using v1.01-cache-2.11-cpan-98e64b0badf )