strict/warnings, and explanatory comments
[gitmo/MooseX-UndefTolerant.git] / lib / MooseX / UndefTolerant / Class.pm
CommitLineData
d6ce838b 1package MooseX::UndefTolerant::Class;
02e25b00 2
3# applied to metaclass, for Moose >= 1.9900
4
5use strict;
6use warnings;
7
d6ce838b 8use Moose::Role;
9
e5d1b642 10around _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
27no Moose::Role;
d6ce838b 281;