Commit | Line | Data |
3fea05b9 |
1 | package MooseX::Clone::Meta::Attribute::Trait::Clone::Std; |
2 | use Moose::Role; |
3 | |
4 | use namespace::clean -except => 'meta'; |
5 | |
6 | with qw(MooseX::Clone::Meta::Attribute::Trait::Clone::Base); |
7 | |
8 | requires qw(clone_value_data); |
9 | |
10 | sub clone_value { |
11 | my ( $self, $target, $proto, %args ) = @_; |
12 | |
13 | if ( exists $args{init_arg} ) { |
14 | $self->set_value( $target, $args{init_arg} ); |
15 | } else { |
16 | return unless $self->has_value($proto); |
17 | |
18 | my $clone = $self->clone_value_data( scalar($self->get_value($proto)), %args ); |
19 | |
20 | $self->set_value( $target, $clone ); |
21 | } |
22 | } |
23 | |
24 | __PACKAGE__ |
25 | |
26 | __END__ |