Aion
view release on metacpan or search on metacpan
lib/Aion/Meta/FeatureConstruct.md view on Meta::CPAN
## setter
Ðод ÑеÑÑеÑа в акÑеÑÑоÑе. Ðо ÑмолÑаниÑ: '%(write)s'.
```perl
$::construct->setter # \> %(write)s
```
## selfret
Ðод возвÑаÑа из ÑеÑÑеÑа. ÐкÑеÑÑоÑ.
```perl
$::construct->selfret # \> $self
```
## add_attr($code, $unshift)
ÐобавлÑÐµÑ Ð°ÑÑибÑÑ Ðº акÑеÑÑоÑÑ.
```perl
$::construct->add_attr(':bvalue');
$::construct->{attr} # --> [':lvalue', ':bvalue']
$::construct->add_attr(':a_value', 1);
$::construct->{attr} # --> [':a_value', ':lvalue', ':bvalue']
```
## add_preset($code, $unshift)
ÐобавлÑÐµÑ ÐºÐ¾Ð´ пÑедÑÑÑановки пеÑед запиÑÑÑ.
```perl
$::construct->add_preset('die if $val < 0;', 1);
$::construct->{preset} # -> 'die if $val < 0;'
```
## add_trigger($code, $unshift)
ÐобавлÑÐµÑ ÑÑÐ¸Ð³Ð³ÐµÑ Ð¿Ð¾Ñле запиÑи.
```perl
$::construct->add_trigger('$self->on_change;');
$::construct->{trigger} # -> '$self->on_change;'
```
## add_cleaner($code, $unshift)
ÐобавлÑÐµÑ ÐºÐ¾Ð´ оÑиÑÑки пеÑед Ñдалением.
```perl
$::construct->add_cleaner('$self->{old} = $self->{attr};');
$::construct->{cleaner} # -> '$self->{old} = $self->{attr};'
```
## add_access($code, $unshift)
ÐобавлÑÐµÑ ÐºÐ¾Ð´ в геÑÑÐµÑ Ð¿ÐµÑед ÑÑением аÑÑибÑÑа.
```perl
$::construct->add_access('die unless $self->{attr};');
$::construct->{access} # -> 'die unless $self->{attr};'
```
## add_release($code, $unshift)
ÐобавлÑÐµÑ ÐºÐ¾Ð´ в геÑÑÐµÑ Ð¿Ð¾Ñле ÑÑениÑ.
```perl
$::construct->add_release('$val = undef;');
$::construct->{release} # -> '$val = undef;'
```
## initializer
ÐенеÑиÑÑÐµÑ ÐºÐ¾Ð´ Ð´Ð»Ñ Ð¸Ð½Ð¸ÑиализаÑии ÑиÑи в конÑÑÑÑкÑоÑе (`new`).
```perl
$::construct->initializer # -> << 'END'
if (exists $value{my_feature}) {
my $val = delete $value{my_feature};
die if $val < 0;
$self->{my_feature} = $val;
$self->on_change;
}
END
```
## destroyer
ÐенеÑиÑÑÐµÑ ÐºÐ¾Ð´ Ð´Ð»Ñ Ð´ÐµÑÑÑÑкÑоÑа.
```perl
$::construct->destroyer # -> <<'END'
if (exists $self->{my_feature}) {
eval {
$self->{old} = $self->{attr};
};
warn $@ if $@;
}
END
```
## accessor
ÐенеÑиÑÑÐµÑ ÐºÐ¾Ð´ акÑеÑÑоÑа.
```perl
$::construct->accessor # -> <<'END'
package My::Package {
sub my_feature:a_value:lvalue:bvalue {
if (@_>1) {
my ($self, $val) = @_;
die if $val < 0;
$self->{my_feature} = $val;
$self->on_change;
$self
} else {
my ($self) = @_;
die unless $self->{attr};
my $val = $self->{my_feature};
$val = undef;
$val
}
}
}
END
```
## reader
ÐенеÑиÑÑÐµÑ ÐºÐ¾Ð´ геÑÑеÑа.
```perl
$::construct->reader # -> <<'END'
package My::Package {
sub _get_my_feature {
my ($self) = @_;
die unless $self->{attr};
my $val = $self->{my_feature};
$val = undef;
$val
}
}
END
```
## writer
ÐенеÑиÑÑÐµÑ ÐºÐ¾Ð´ ÑеÑÑеÑа.
```perl
$::construct->writer # -> <<'END'
package My::Package {
sub _set_my_feature {
my ($self, $val) = @_;
die if $val < 0;
$self->{my_feature} = $val;
$self->on_change;
$self
}
}
END
```
## predicate
ÐенеÑиÑÑÐµÑ ÐºÐ¾Ð´ пÑедикаÑа.
```perl
$::construct->predicate # -> <<'END'
package My::Package {
sub has_my_feature {
my ($self) = @_;
exists $self->{my_feature}
}
}
END
```
## clearer
ÐенеÑиÑÑÐµÑ ÐºÐ¾Ð´ оÑиÑÑиÑелÑ.
```perl
$::construct->clearer # -> <<'END'
package My::Package {
sub clear_my_feature {
my ($self) = @_;
if (exists $self->{my_feature}) {
$self->{old} = $self->{attr};
delete $self->{my_feature}
}
$self
}
}
END
```
# AUTHOR
Yaroslav O. Kosmina <dart@cpan.org>
# LICENSE
( run in 1.821 second using v1.01-cache-2.11-cpan-d80b1682f3f )