X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=gitmo%2FMouse.git;a=blobdiff_plain;f=lib%2FMouse%2FMeta%2FClass.pm;h=51a496f125a3bf5777e960819cda5916c173921c;hp=cea2064030148f3e3d68c929e5719d03bdb949a9;hb=f18ecf2a2722afd64a24f543fe503ae9dc969e86;hpb=87ca293be7ca0041bbb86ad9609a498fb2010f4f diff --git a/lib/Mouse/Meta/Class.pm b/lib/Mouse/Meta/Class.pm index cea2064..51a496f 100644 --- a/lib/Mouse/Meta/Class.pm +++ b/lib/Mouse/Meta/Class.pm @@ -230,19 +230,11 @@ sub _initialize_instance{ sub clone_object { my $class = shift; my $instance = shift; + my %params = (@_ == 1) ? %{$_[0]} : @_; (blessed($instance) && $instance->isa($class->name)) || $class->throw_error("You must pass an instance of the metaclass (" . $class->name . "), not ($instance)"); - $class->clone_instance($instance, @_); -} - -sub clone_instance { - my ($class, $instance, %params) = @_; - - (blessed($instance)) - || $class->throw_error("You can only clone instances, ($instance) is not a blessed instance"); - my $clone = bless { %$instance }, ref $instance; foreach my $attr ($class->get_all_attributes()) { @@ -254,7 +246,13 @@ sub clone_instance { } return $clone; +} +sub clone_instance { + my ($class, $instance, %params) = @_; + + Carp::cluck('clone_instance has been deprecated. Use clone_object instead'); + return $class->clone_object($instance, %params); } sub make_immutable { @@ -371,7 +369,7 @@ __END__ =head1 NAME -Mouse::Meta::Class - hook into the Mouse MOP +Mouse::Meta::Class - The Mouse class metaclass =head1 METHODS @@ -380,10 +378,6 @@ Mouse::Meta::Class - hook into the Mouse MOP Finds or creates a Mouse::Meta::Class instance for the given ClassName. Only one instance should exist for a given class. -=head2 new %args -> Mouse::Meta::Class - -Creates a new Mouse::Meta::Class. Don't call this directly. - =head2 name -> ClassName Returns the name of the owner class. @@ -392,7 +386,7 @@ Returns the name of the owner class. Gets (or sets) the list of superclasses of the owner class. -=head2 add_attribute (Mouse::Meta::Attribute| name => spec) +=head2 add_attribute (name => spec | Mouse::Meta::Attribute) Begins keeping track of the existing L for the owner class. @@ -425,15 +419,18 @@ Returns the L with the given name. Returns the list of classes in method dispatch order, with duplicates removed. +=head2 new_object Parameters -> Instance + +Create a new instance. + =head2 clone_object Instance -> Instance Clones the given C which must be an instance governed by this metaclass. -=head2 clone_instance Instance, Parameters -> Instance +=head1 SEE ALSO -The clone_instance method has been made private. -The public version is deprecated. +L =cut