/usr/local/CPAN/MooseX-Clone/MooseX/Clone/Meta/Attribute/Trait/Clone/Std.pm
package MooseX::Clone::Meta::Attribute::Trait::Clone::Std;
use Moose::Role;
use namespace::clean -except => 'meta';
with qw(MooseX::Clone::Meta::Attribute::Trait::Clone::Base);
requires qw(clone_value_data);
sub clone_value {
my ( $self, $target, $proto, %args ) = @_;
if ( exists $args{init_arg} ) {
$self->set_value( $target, $args{init_arg} );
} else {
return unless $self->has_value($proto);
my $clone = $self->clone_value_data( scalar($self->get_value($proto)), %args );
$self->set_value( $target, $clone );
}
}
__PACKAGE__
__END__