Another TODO note, to go with the CAVEATS
[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
dc3621bc 10# TODO: this code should be in the attribute trait, in the inlined version of
11# initialize_instance_slot, but this does not yet exist!
12
e5d1b642 13around _inline_init_attr_from_constructor => sub {
14 my $orig = shift;
15 my $self = shift;
16 my ($attr, $idx) = @_;
d6ce838b 17
e5d1b642 18 my @source = $self->$orig(@_);
d6ce838b 19
e5d1b642 20 my $init_arg = $attr->init_arg;
d6ce838b 21
e5d1b642 22 return
23 "if ( exists \$params->{$init_arg} && defined \$params->{$init_arg} ) {",
24 @source,
25 '} else {',
26 "delete \$params->{$init_arg};",
27 '}';
28};
d6ce838b 29
30no Moose::Role;
d6ce838b 311;