Commit | Line | Data |
---|---|---|
d6ce838b | 1 | package MooseX::UndefTolerant::Class; |
02e25b00 | 2 | |
3 | # applied to metaclass, for Moose >= 1.9900 | |
4 | ||
5 | use strict; | |
6 | use warnings; | |
7 | ||
d6ce838b | 8 | use Moose::Role; |
9 | ||
e5d1b642 | 10 | around _inline_init_attr_from_constructor => sub { |
11 | my $orig = shift; | |
12 | my $self = shift; | |
13 | my ($attr, $idx) = @_; | |
d6ce838b | 14 | |
e5d1b642 | 15 | my @source = $self->$orig(@_); |
d6ce838b | 16 | |
e5d1b642 | 17 | my $init_arg = $attr->init_arg; |
d6ce838b | 18 | |
e5d1b642 | 19 | return |
20 | "if ( exists \$params->{$init_arg} && defined \$params->{$init_arg} ) {", | |
21 | @source, | |
22 | '} else {', | |
23 | "delete \$params->{$init_arg};", | |
24 | '}'; | |
25 | }; | |
d6ce838b | 26 | |
27 | no Moose::Role; | |
d6ce838b | 28 | 1; |