Data-Object-Attributes
view release on metacpan or search on metacpan
t/Data_Object_Attributes.t view on Meta::CPAN
use Moo;
use routines;
use Data::Object::Attributes;
has data => (
is => 'ro',
tgr => 1
);
method _trigger_data() {
$self->{triggered} = 1;
return $self;
}
package main;
my $example = Example::HasTgr->new(data => time);
=cut
=scenario has-use
This package supports the C<use> directive denotes that the attribute will be
constructed on-demand, i.e. is lazy, using a custom builder meant to perform
service construction. This directive exists to provide a simple dependency
injection mechanism for class attributes. This ability is not supported by the
L<Moo> object superclass.
=example has-use
package Example::HasUse;
use Moo;
use routines;
use Data::Object::Attributes;
has data => (
is => 'ro',
use => ['service', 'time']
);
method service($type, @args) {
$self->{serviced} = 1;
return time if $type eq 'time';
}
package main;
my $example = Example::HasUse->new;
=cut
=scenario has-wkr
This package supports the C<wkr> and C<weak_ref> directives is used to denote if
the attribute's value should be weakened. See the L<Moo> documentation for more
details.
=example has-wkr
package Example::HasWkr;
use Moo;
use Data::Object::Attributes;
has data => (
is => 'ro',
wkr => 1
);
package main;
my $data = do {
my ($a, $b);
$a = { time => time };
$b = { time => $a };
$a->{time} = $b;
$a
};
my $example = Example::HasWkr->new(data => $data);
=cut
=scenario has-wrt
This package supports the C<wrt> and C<writer> directives denotes the name of
the method to be used to "write" and return the attribute's value. See the
L<Moo> documentation for more details.
=example has-wrt
package Example::HasWrt;
use Moo;
use Data::Object::Attributes;
has data => (
is => 'ro',
wrt => 'set_data'
);
package main;
my $example = Example::HasWrt->new;
=cut
package main;
my $test = testauto(__FILE__);
( run in 1.033 second using v1.01-cache-2.11-cpan-39bf76dae61 )