
MooseX::AttributeInflate - Auto-inflate your Moose attribute objects

Version 0.02

Lazily constructs ("inflates") an object attribute, optionally using constant parameters.
package MyClass;
use MooseX::AttributeInflate;
has_inflated 'helper' => (
is => 'ro', isa => 'MyHelper'
);
# OR, explicitly
has 'helper' => (
is => 'ro', isa => 'MyHelper',
traits => [qw/Inflated/],
inflate_args => [],
inflate_method => 'new',
);
my $obj = MyClass->new();
$obj->helper->help();

For each attribute defined with has_inflated, this module overrides the default for that attribute, calling instead that attribute's type's constructor. The construction is done lazily unless overriden with lazy => 0.
See has_inflated for options and more detail.
Construction only works with objects; an exception will be thrown if the isa type of this attribute is not a decendant of Object (this includes ArrayRef and HashRef types).
Alternatively, you may use the attribute trait Inflated to compose an attribute with other attribute trais.

Just like Moose's has, but applies the attribute trait Inflated and defaults lazy to be on.
If lazy_build is defined, the canonical build method (e.g. _build_helper) IS NOT called. Otherwise, lazy_build works as usual, setting required and installing a clearer and predicate.
Additional options:
Defaults on, but can be turned off with lazy => 0.
Just like Moose's lazy_build, but does not call the canonical builder method (e.g. _build_$name).
The name of the constructor to use. Defaults to 'new'.
The arguments to pass to the constructor. Defaults to an empty list.

Stash <jstash+cpan@gmail.com>

Please report any bugs or feature requests to bug-moosex-attrinflate at rt.cpan.org, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=MooseX-AttributeInflate. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.

You can find documentation for this module with the perldoc command.
perldoc MooseX::AttributeInflate
You can also look for information at:
http://rt.cpan.org/NoAuth/Bugs.html?Dist=MooseX-AttributeInflate


Copyright 2009 Jeremy Stashewsky
Copyright 2009 Socialtext Inc., all rights reserved.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.