MooseX::DeepAccessors - Delegate methods to member objects, curried with more methods!
Version 0.02
package MyClass; use Moose; use MooseX::DeepAccessors; has foo => ( isa => 'Str', is => 'ro', required => 0, ); has delegate => ( isa => 'Foo', metaclass => 'MooseX::DeepAccessors', is => 'ro', default => sub { Foo->new }, required => 0, lazy => 1, deep_accessors => { 'bar' => { 'blah' => [ sub { $_[0]->foo }, ], }, }, );
The deep_accessors attribute takes parameters in the form:
deep_accessors
deep_accessors => { '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.
LOCALMETHOD
DELEGATEMETHOD
OTHERLOCALMETHOD
To put it another way, it allows you to write: $object->LOCALMETHOD;
Rather than: $object->DELEGATE->DELEGATEMETHOD( $object->OTHERLOCALMETHOD );
And thus can be thought of as providing another kind of currying for Moose methods.
Joel Bernstein, <rataxis at cpan.org>
<rataxis at cpan.org>
Please report any bugs or feature requests to bug-moosex-deepaccessors at rt.cpan.org, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=MooseX-DeepAccessors. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.
bug-moosex-deepaccessors at rt.cpan.org
You can find documentation for this module with the perldoc command.
perldoc MooseX::DeepAccessors
You can also look for information at:
RT: CPAN's request tracker
http://rt.cpan.org/NoAuth/Bugs.html?Dist=MooseX-DeepAccessors
AnnoCPAN: Annotated CPAN documentation
http://annocpan.org/dist/MooseX-DeepAccessors
CPAN Ratings
http://cpanratings.perl.org/d/MooseX-DeepAccessors
Search CPAN
http://search.cpan.org/dist/MooseX-DeepAccessors
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.
t0m
nothingmuch
#moose
Really, this shouldn't be necessary, and hopefully the next Moose release will integrate this functionality making this module redundant.
(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.
To install MooseX::DeepAccessors, copy and paste the appropriate command in to your terminal.
cpanm
cpanm MooseX::DeepAccessors
CPAN shell
perl -MCPAN -e shell install MooseX::DeepAccessors
For more information on module installation, please visit the detailed CPAN module installation guide.