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.