Why not adopt me?
NAME
MooseX::AttributeInflate - Auto-inflate your Moose attribute objects
VERSION
Version 0.03
SYNOPSIS
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();
DESCRIPTION
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.
EXPORTS
has_inflated
Just like Moose's has
, but applies the attribute trait Inflated
and defaults lazy
to be on. See "EXPORTED FUNCTIONS" in Moose for more detail on has
.
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:
- lazy
-
Defaults on, but can be turned off with
lazy => 0
. - lazy_build
-
Just like Moose's
lazy_build
, but does not call the canonical builder method (e.g._build_$name
). - inflate_method
-
The name of the constructor to use. Defaults to 'new'.
- inflate_args
-
The arguments to pass to the constructor. Defaults to an empty list.
SEE ALSO
MooseX::CurriedHandles - combine with this module for auto-inflating moose curry!
http://github.com/stash/moosex-attributeinflate/ - Github repository
AUTHOR
Stash <jstash+cpan@gmail.com>
BUGS
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.
SUPPORT
You can find documentation for this module with the perldoc command.
perldoc MooseX::AttributeInflate
You can also look for information at:
#moose
on irc.perl.orgRT: CPAN's request tracker
http://rt.cpan.org/NoAuth/Bugs.html?Dist=MooseX-AttributeInflate
AnnoCPAN: Annotated CPAN documentation
CPAN Ratings
Search CPAN
ACKNOWLEDGEMENTS
konobi
for Meta-advice and CPAN help
perigrin
, doy
, Sartak
and other #moose
folks for suggestions & patches.
COPYRIGHT & LICENSE
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.