X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMouse%2FMeta%2FAttribute.pm;h=0ee84009722a20eb38b08727e4943ae5a437af73;hb=8cf51b82d94aad02f81dc853be874e9a49a82c31;hp=03b290771f2e5be024d9d3305aaa6150ec453c68;hpb=2a464664052830d5fad036569d5ccb3964c7f592;p=gitmo%2FMouse.git diff --git a/lib/Mouse/Meta/Attribute.pm b/lib/Mouse/Meta/Attribute.pm index 03b2907..0ee8400 100644 --- a/lib/Mouse/Meta/Attribute.pm +++ b/lib/Mouse/Meta/Attribute.pm @@ -202,13 +202,13 @@ sub has_builder { exists $_[0]->{builder} } sub has_read_method { exists $_[0]->{reader} || exists $_[0]->{accessor} } sub has_write_method { exists $_[0]->{writer} || exists $_[0]->{accessor} } -sub _create_args { +sub _create_args { # DEPRECATED $_[0]->{_create_args} = $_[1] if @_ > 1; $_[0]->{_create_args} } sub interpolate_class{ - my($class, $name, $args) = @_; + my($class, $args) = @_; if(my $metaclass = delete $args->{metaclass}){ $class = Mouse::Util::resolve_metaclass_alias( Attribute => $metaclass ); @@ -241,7 +241,7 @@ sub interpolate_class{ return( $class, @traits ); } -sub canonicalize_args{ +sub canonicalize_args{ # DEPRECATED my ($self, $name, %args) = @_; Carp::cluck("$self->canonicalize_args has been deprecated." @@ -295,7 +295,7 @@ sub verify_type_constraint_error { $self->throw_error("Attribute ($name) does not pass the type constraint because: " . $type->get_message($value)); } -sub coerce_constraint { ## my($self, $value) = @_; +sub coerce_constraint { # DEPRECATED my $type = $_[0]->{type_constraint} or return $_[1]; @@ -320,13 +320,15 @@ sub _canonicalize_handles { } sub clone_and_inherit_options{ - my $self = shift; - my $name = shift; + my($self, %args) = @_; + + my($attribute_class, @traits) = ref($self)->interpolate_class(\%args); - return ref($self)->new($name, %{$self}, (@_ == 1) ? %{$_[0]} : @_); + $args{traits} = \@traits if @traits; + return $attribute_class->new($self->name, %{$self}, %args); } -sub clone_parent { +sub clone_parent { # DEPRECATED my $self = shift; my $class = shift; my $name = shift; @@ -339,7 +341,7 @@ sub clone_parent { $self->clone_and_inherited_args($class, $name, %args); } -sub get_parent_args { +sub get_parent_args { # DEPRECATED my $self = shift; my $class = shift; my $name = shift; @@ -354,8 +356,12 @@ sub get_parent_args { } -#sub get_read_method { $_[0]->{reader} || $_[0]->{accessor} } -#sub get_write_method { $_[0]->{writer} || $_[0]->{accessor} } +sub get_read_method { # DEPRECATED + $_[0]->{reader} || $_[0]->{accessor} +} +sub get_write_method { # DEPRECATED + $_[0]->{writer} || $_[0]->{accessor} +} sub get_read_method_ref{ my($self) = @_; @@ -558,6 +564,15 @@ 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 +attribute is read- or write-only. + =head1 SEE ALSO L