Provided by: libmoosex-attribute-chained-perl_1.0.1-1_all bug

NAME

       MooseX::Attribute::ChainedClone - Attribute that returns a cloned instance

VERSION

       version 1.0.1

SYNOPSIS

         package Test;
         use Moose;

         has debug => (
             traits => [ 'ChainedClone' ],
             is => 'rw',
             isa => 'Bool',
             default => 0,
         );

         sub complex_method
         {
             my $self = shift;

             #...

             print "helper message" if $self->debug;

             #...
         }

         sub clone {
             my $self = shift;
             # custom clone code here
             # defaults to:
             return bless { %$self }, ref $self;
         }

         1;

       Which allows for:

           my $test = Test->new;
           $test->debug(1)->complex_method; # debug enabled
                                            # complex_method is called on a cloned instance
                                            # with debug set to 1

           $test->complex_method;           # debug is still disabled on $test

           $test->debug(1); # returns a cloned $test instance with debug set to 1
           $test->debug;    # returns 0

DESCRIPTION

       MooseX::Attribute::ChainedClone is a Moose Trait which allows for method chaining on
       accessors by returning a cloned instance of $self on write/set operations.

       If $self has a "clone" method, this method is invoked to clone the instance.  This allows
       for easy integration with MooseX::Clone or any custom made clone method. If no "clone"
       method is available, the new instance is build using "bless { %$self }, ref $self".

AUTHORS

       •   Moritz Onken <onken@netcubed.de>

       •   David McLaughlin <david@dmclaughlin.com>

COPYRIGHT AND LICENSE

       This software is copyright (c) 2012 by Moritz Onken.

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