Aion
view release on metacpan or search on metacpan
i18n/Aion/Meta/FeatureConstruct.ru-en.po view on Meta::CPAN
msgid "## clearer_name\n"
"ÐÐ¼Ñ Ð¼ÐµÑода-оÑиÑÑиÑелÑ. ÐкÑеÑÑоÑ."
msgstr "## clearer_name\n"
"The name of the cleanser method. Accessor."
msgid "## initer\n"
"Ðод иниÑиализаÑии аÑÑибÑÑа. ÐкÑеÑÑоÑ."
msgstr "##initer\n"
"Attribute initialization code. Accessor."
msgid "## not_specified\n"
"Ðод иниÑиализаÑии, еÑли знаÑение не Ñказано. ÐкÑеÑÑоÑ."
msgstr "## not_specified\n"
"Initialization code if no value is specified. Accessor."
msgid "## getter\n"
"Ðод геÑÑеÑа в акÑеÑÑоÑе. ÐкÑеÑÑоÑ."
msgstr "## getter\n"
"Getter code in the accessor. Accessor."
msgid "## setter\n"
"Ðод ÑеÑÑеÑа в акÑеÑÑоÑе. Ðо ÑмолÑаниÑ: '%(write)s'."
msgstr "## setter\n"
lib/Aion.pm view on Meta::CPAN
die "Use is => '{ro|rw|wo|no} {+|-} {*} {?} {!}'" if $is !~ /^(?<access>ro|rw|wo|no)?(?<require>[+-])?(?<weak>\*)?(?<has>\??)(?<clear>!?)\z/;
my ($construct, $name) = @$feature{qw/construct name/};
$construct->getter("die 'Feature $name cannot be get!';") if $+{access} ~~ [qw/wo no/];
$construct->setter("die 'Feature $name cannot be set!';") if $+{access} ~~ [qw/ro no/];
$construct->add_trigger("%(weaken)s") if $+{weak};
$feature->{required} = 1, $construct->not_specified(' else { die "%(init_arg)s required!" }') if $+{require} eq '+';
$feature->{excessive} = 1, $construct->initer('die "%(init_arg)s excessive!"') if $+{require} eq '-';
$feature->{make_predicate} = 1 if $+{has};
$feature->{make_clearer} = 1 if $+{clear};
}
# isa => Type
sub isa_aspect {
my ($isa, $feature) = @_;
lib/Aion.pm view on Meta::CPAN
%(write)s
}");
} else {
$feature->construct->add_access("unless(%(has)s) {
my \$val = ${\$feature->meta}\{default};
%(write)s
}");
}
} else {
if($default_is_code) {
$feature->{construct}->not_specified(" else {
my \$val = ${\$feature->meta}\{builder}->(\$self);
%(write)s
}");
} else {
$feature->{construct}->not_specified(" else {
my \$val = ${\$feature->meta}\{default};
%(write)s
}");
}
}
}
# trigger => $sub
sub trigger_aspect {
lib/Aion/Meta/FeatureConstruct.md view on Meta::CPAN
$::construct->clearer_name # \> clear_%(name)s
```
## initer
Ðод иниÑиализаÑии аÑÑибÑÑа. ÐкÑеÑÑоÑ.
```perl
$::construct->initer # \> %(initvar)s%(write)s
```
## not_specified
Ðод иниÑиализаÑии, еÑли знаÑение не Ñказано. ÐкÑеÑÑоÑ.
```perl
$::construct->not_specified # -> ''
```
## getter
Ðод геÑÑеÑа в акÑеÑÑоÑе. ÐкÑеÑÑоÑ.
```perl
$::construct->getter # \> %(read)s
```
## setter
lib/Aion/Meta/FeatureConstruct.pm view on Meta::CPAN
Aion::Meta::Util::create_getters(qw/
pkg name
write read
getvar ret
/);
Aion::Meta::Util::create_accessors(qw/
init_arg
set get has clear weaken
accessor_name reader_name writer_name predicate_name clearer_name
initer not_specified
getter setter selfret
/);
# ÐонÑÑÑÑкÑоÑ
sub new {
my ($cls, $pkg, $name) = @_;
bless {
pkg => $pkg,
name => $name,
initializer => <<'END',
if (exists $value{%(init_arg)s}) {
%(initer)s
}%(not_specified)s
END
destroyer => <<'END',
if (%(has)s) {
eval {
%(cleaner)s
};
warn $@ if $@;
}
END
accessor => <<'END',
lib/Aion/Meta/FeatureConstruct.pm view on Meta::CPAN
reader_name => '_get_%(name)s',
writer_name => '_set_%(name)s',
attr => '',
write => '%(preset)s%(set)s%(trigger)s',
read => '%(access)s%(getvar)s%(release)s%(ret)s',
setter => '%(write)s',
getter => '%(read)s',
initer => "%(initvar)s%(write)s",
init_arg => '%(name)s',
initvar => 'my $val = delete $value{%(init_arg)s};',
not_specified => '',
preset => '',
set => '$self->{%(name)s} = $val;',
trigger => '',
selfret => '$self',
access => '',
getvar => '%(get)s',
get => '$self->{%(name)s}',
release => '',
ret => '',
predicate_name => 'has_%(name)s',
lib/Aion/Meta/FeatureConstruct.pm view on Meta::CPAN
The name of the cleanser method. Accessor.
$::construct->clearer_name # \> clear_%(name)s
=head2 initer
Attribute initialization code. Accessor.
$::construct->initer # \> %(initvar)s%(write)s
=head2 not_specified
Initialization code if no value is specified. Accessor.
$::construct->not_specified # -> ''
=head2 getter
Getter code in the accessor. Accessor.
$::construct->getter # \> %(read)s
=head2 setter
Setter code in the accessor. Default: '%(write)s'.
t/aion/meta/feature-construct.t view on Meta::CPAN
local ($::_g0 = do {$::construct->clearer_name}, $::_e0 = 'clear_%(name)s'); ::ok $::_g0 eq $::_e0, '$::construct->clearer_name # \> clear_%(name)s' or ::diag ::_string_diff($::_g0, $::_e0); undef $::_g0; undef $::_e0;
#
# ## initer
# Ðод иниÑиализаÑии аÑÑибÑÑа. ÐкÑеÑÑоÑ.
#
::done_testing; }; subtest 'initer' => sub {
local ($::_g0 = do {$::construct->initer}, $::_e0 = '%(initvar)s%(write)s'); ::ok $::_g0 eq $::_e0, '$::construct->initer # \> %(initvar)s%(write)s' or ::diag ::_string_diff($::_g0, $::_e0); undef $::_g0; undef $::_e0;
#
# ## not_specified
# Ðод иниÑиализаÑии, еÑли знаÑение не Ñказано. ÐкÑеÑÑоÑ.
#
::done_testing; }; subtest 'not_specified' => sub {
local ($::_g0 = do {$::construct->not_specified}, $::_e0 = do {''}); ::ok defined($::_g0) == defined($::_e0) && $::_g0 eq $::_e0, '$::construct->not_specified # -> \'\'' or ::diag ::_struct_diff($::_g0, $::_e0); undef $::_g0; undef $::_e0;
#
# ## getter
# Ðод геÑÑеÑа в акÑеÑÑоÑе. ÐкÑеÑÑоÑ.
#
::done_testing; }; subtest 'getter' => sub {
local ($::_g0 = do {$::construct->getter}, $::_e0 = '%(read)s'); ::ok $::_g0 eq $::_e0, '$::construct->getter # \> %(read)s' or ::diag ::_string_diff($::_g0, $::_e0); undef $::_g0; undef $::_e0;
#
# ## setter
( run in 1.316 second using v1.01-cache-2.11-cpan-5735350b133 )