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:

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.