NAME
MooseX::DeepAccessors - Delegate methods to member objects, curried with more methods!
VERSION
Version 0.02
SYNOPSIS
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 }, ], },
},
);
INTERFACE
The deep_accessors
attribute takes parameters in the form:
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
.
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.
AUTHOR
Joel Bernstein, <rataxis at cpan.org>
BUGS
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.
SUPPORT
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
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.
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.