}
sub interpolate_class{
- my($class, $name, $args) = @_;
+ my($class, $args) = @_;
if(my $metaclass = delete $args->{metaclass}){
$class = Mouse::Util::resolve_metaclass_alias( Attribute => $metaclass );
}
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 { # DEPRECATED
Creates a new attribute in the owner class, inheriting options from parent classes.
Accessors and helper methods are installed. Some error checking is done.
-=item C<< get_read_method_ref >>\r
+=head2 C<< get_read_method_ref >>\r
\r
-=item C<< get_write_method_ref >>\r
+=head2 C<< get_write_method_ref >>\r
\r
Returns the subroutine reference of a method suitable for reading or\r
writing the attribute's value in the associated class. These methods\r