Be more careful avoiding warnings when the init_arg is undef.
[gitmo/MooseX-UndefTolerant.git] / lib / MooseX / UndefTolerant / Constructor.pm
CommitLineData
2d1c57bd 1package MooseX::UndefTolerant::Constructor;
2use Moose::Role;
3
4around('_generate_slot_initializer', sub {
5 my $orig = shift;
6 my $self = shift;
7 my $attr = $self->_attributes->[$_[0]]->init_arg;
8
d10a4d7f 9 # insert a line of code at the start of the initializer,
10 # clearing the param if it's undefined.
2d1c57bd 11
d10a4d7f 12 if (defined $attr) {
13 my $tolerant_code =
14 qq# delete \$params->{'$attr'} unless # .
15 qq# exists \$params->{'$attr'} && defined \$params->{'$attr'};\n#;
16
17 return $tolerant_code . $self->$orig(@_);
18 }
19 else {
20 return $self->$orig(@_);
21 }
2d1c57bd 22});
23
24no Moose::Role;
25
261;