Provided by: libmoosex-clone-perl_0.06-3_all bug

NAME

       MooseX::Clone - Fine-grained cloning support for Moose objects.

VERSION

       version 0.06

SYNOPSIS

           package Bar;
           use Moose;

           with qw(MooseX::Clone);

           has foo => (
               isa => "Foo",
               traits => [qw(Clone)], # this attribute will be recursively cloned
           );

           package Foo;
           use Moose;

           # this API is used/provided by MooseX::Clone
           sub clone {
               my ( $self, %params ) = @_;

               # ...
           }

           # used like this:

           my $bar = Bar->new( foo => Foo->new );

           my $copy = $bar->clone( foo => [ qw(Args for Foo::clone) ] );

DESCRIPTION

       Out of the box Moose only provides very barebones cloning support in order to maximize flexibility.

       This role provides a "clone" method that makes use of the low level cloning support already in Moose and
       adds selective deep cloning based on introspection on top of that. Attributes with the "Clone" trait will
       handle cloning of data within the object, typically delegating to the attribute value's own "clone"
       method.

TRAITS

       Clone
           By default Moose objects are cloned like this:

               bless { %$old }, ref $old;

           By  specifying  the Clone trait for certain attributes custom behavior the value's own "clone" method
           will be invoked.

           By extending this trait you can create custom cloning for certain attributes.

           By creating "clone" methods for your objects (e.g. by composing MooseX::Compile) you  can  make  them
           interact with this trait.

       NoClone
           Specifies attributes that should be skipped entirely while cloning.

METHODS

       clone %params
           Returns a clone of the object.

           All  attributes which do the MooseX::Clone::Meta::Attribute::Trait::Clone role will handle cloning of
           that  attribute.  All  other  fields  are  plainly  copied  over,  just  like  in  "clone_object"  in
           Class::MOP::Class.

           Attributes  whose "init_arg" is in %params and who do the "Clone" trait will get that argument passed
           to the "clone" method (dereferenced). If the attribute does not self-clone then  the  param  is  used
           normally  by  "clone_object"  in Class::MOP::Class, that is it will simply shadow the previous value,
           and does not have to be an array or hash reference.

TODO

       Refactor to work in term of a metaclass trait so that "meta->clone_object" will still do the right thing.

THANKS

       clkao made the food required to write this module

AUTHOR

       XXXX XXX'XX (Yuval Kogman) <nothingmuch@woobling.org>

COPYRIGHT AND LICENSE

       This software is copyright (c) 2008 by XXXX XXX'XX (Yuval Kogman).

       This is free software; you can redistribute it and/or modify it under  the  same  terms  as  the  Perl  5
       programming language system itself.

perl v5.34.0                                       2022-06-15                                 MooseX::Clone(3pm)