Add support for immutable classes, by adjusting the generated constructor.
[gitmo/MooseX-UndefTolerant.git] / lib / MooseX / UndefTolerant / Constructor.pm
1 package MooseX::UndefTolerant::Constructor;
2 use Moose::Role;
3
4 around('_generate_slot_initializer', sub {
5         my $orig = shift;
6         my $self = shift;
7         my $attr = $self->_attributes->[$_[0]]->init_arg;
8
9         my $tolerant_code = 
10              qq# delete \$params->{'$attr'} unless # . 
11              qq# exists \$params->{'$attr'} && defined \$params->{'$attr'};\n#;
12
13         return $tolerant_code . $self->$orig(@_);
14 });
15
16 no Moose::Role;
17
18 1;