NAME
MooseX::CurriedHandles - Delegate methods to member objects, curried with more methods!
VERSION
Version 0.03
SYNOPSIS
package MyClass;
use Moose;
use MooseX::CurriedHandles;
has foo => (
isa => 'Str',
is => 'ro',
required => 0,
);
has delegate => (
isa => 'Foo',
metaclass => 'MooseX::CurriedHandles',
is => 'ro',
default => sub { Foo->new },
required => 0,
lazy => 1,
curried_handles => {
'bar' => { 'blah' => [ sub { $_[0]->foo }, ], },
},
);
INTERFACE
This is the module formerly known as MooseX::DeepAccessors. This is a much better and more Moose-consistent name for it.
The curried_handles attribute takes parameters in the form:
curried_handles => {
'LOCALMETHOD' => { 'DELEGATEMETHOD' => [ sub { $_[0]->OTHERLOCALMETHOD } ] }
}
Where LOCALMETHOD is the method on this class to create, DELEGATEMETHOD is the method on the object whose accessor is being described, and OTHERLOCALMETHOD is a method on this class, which will be called with the object passed to LOCALMETHOD and whose return value will be passed to DELEGATEMETHOD.
To put it another way, it allows you to write: $object->localmethod;
Rather than: $object->delegate->delegatemethod( $object->otherlocalmethod );
Any extra arguments passed to localmethod will be passed to the delegatemethod:
$object->localmethod(@foo)
is equivalent to:
$object->delegate->delegatemethod( $object->anotherlocalmethod, @foo );
And thus can be thought of as providing another kind of currying for Moose methods.
AUTHOR
Joel Bernstein, <rataxis at cpan.org>
BUGS
Please report any bugs or feature requests to bug-moosex-curriedhandles at rt.cpan.org, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=MooseX-CurriedHandles. 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::CurriedHandles
You can also look for information at:
RT: CPAN's request tracker
http://rt.cpan.org/NoAuth/Bugs.html?Dist=MooseX-CurriedHandles
AnnoCPAN: Annotated CPAN documentation
CPAN Ratings
Search CPAN
ACKNOWLEDGEMENTS
This module was written to scratch an itch I had, but the actual code idea comes from t0m and the impetus to release it from nothingmuch. So thankyou, #moose.
Really, this shouldn't be necessary, and hopefully the next Moose release will integrate this functionality making this module redundant.
Thanks to t0m and autarch for suggesting a better name.
COPYRIGHT & LICENSE
(C) Copyright 2008 Joel Bernstein, all rights reserved.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.