X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMouse%2FMeta%2FAttribute.pm;h=1b2fb034bc6332a8ea2773b6ae9bc1b0c9482632;hb=9ae9702effbac814bdd5304e2ff7d4157de754ff;hp=211cd52e87e0dfada0c2233a4edb3093122f889d;hpb=9f74c4013f93b795e432e1818c3ebf13f5afb9f0;p=gitmo%2FMouse.git diff --git a/lib/Mouse/Meta/Attribute.pm b/lib/Mouse/Meta/Attribute.pm index 211cd52..1b2fb03 100644 --- a/lib/Mouse/Meta/Attribute.pm +++ b/lib/Mouse/Meta/Attribute.pm @@ -338,10 +338,10 @@ sub get_parent_args { # DEPRECATED } -sub get_read_method { # DEPRECATED +sub get_read_method { $_[0]->{reader} || $_[0]->{accessor} } -sub get_write_method { # DEPRECATED +sub get_write_method { $_[0]->{writer} || $_[0]->{accessor} } @@ -388,6 +388,15 @@ sub _canonicalize_handles { elsif (ref($handles) eq 'ARRAY') { return map { $_ => $_ } @$handles; } + elsif (ref($handles) eq 'Regexp') { + my $class_or_role = ($self->{isa} || $self->{does}) + || $self->throw_error("Cannot delegate methods based on a Regexp without a type constraint (isa)"); + + my $meta = Mouse::Meta::Class->initialize("$class_or_role"); # "" for stringify + return map { $_ => $_ } + grep { $_ ne 'meta' && !Mouse::Object->can($_) && $_ =~ $handles } + $meta->isa('Mouse::Meta::Class') ? $meta->get_all_method_names : $meta->get_method_list; + } else { $self->throw_error("Unable to canonicalize the 'handles' option with $handles"); } @@ -578,13 +587,13 @@ on success, otherwise Ces. Creates a new attribute in the owner class, inheriting options from parent classes. Accessors and helper methods are installed. Some error checking is done. -=head2 C<< get_read_method_ref >> - -=head2 C<< get_write_method_ref >> - -Returns the subroutine reference of a method suitable for reading or -writing the attribute's value in the associated class. These methods -always return a subroutine reference, regardless of whether or not the +=head2 C<< get_read_method_ref >> + +=head2 C<< get_write_method_ref >> + +Returns the subroutine reference of a method suitable for reading or +writing the attribute's value in the associated class. These methods +always return a subroutine reference, regardless of whether or not the attribute is read- or write-only. =head1 SEE ALSO