X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMooseX%2FUndefTolerant%2FClass.pm;h=13d13803d968d56251c6868b781389aaa441754f;hb=dc3621bc7d4b8f216ea39ed9458714eb1c959b9d;hp=c8bd25c178081d7687777c1a62fe97e42521ebca;hpb=d6ce838b149668ac59c654aa996c3915c311507c;p=gitmo%2FMooseX-UndefTolerant.git diff --git a/lib/MooseX/UndefTolerant/Class.pm b/lib/MooseX/UndefTolerant/Class.pm index c8bd25c..13d1380 100644 --- a/lib/MooseX/UndefTolerant/Class.pm +++ b/lib/MooseX/UndefTolerant/Class.pm @@ -1,25 +1,31 @@ package MooseX::UndefTolerant::Class; + +# applied to metaclass, for Moose >= 1.9900 + +use strict; +use warnings; + use Moose::Role; -if ( $Moose::VERSION >= 1.9900 ) { - around('_inline_init_attr_from_constructor', sub { - my $orig = shift; - my $self = shift; - my ($attr, $idx) = @_; +# TODO: this code should be in the attribute trait, in the inlined version of +# initialize_instance_slot, but this does not yet exist! - my @source = $self->$orig(@_); +around _inline_init_attr_from_constructor => sub { + my $orig = shift; + my $self = shift; + my ($attr, $idx) = @_; - my $init_arg = $attr->init_arg; + my @source = $self->$orig(@_); - return - "if ( exists \$params->{$init_arg} && defined \$params->{$init_arg} ) {", - @source, - '} else {', - "delete \$params->{$init_arg};", - '}'; - }); -} + my $init_arg = $attr->init_arg; -no Moose::Role; + return + "if ( exists \$params->{$init_arg} && defined \$params->{$init_arg} ) {", + @source, + '} else {', + "delete \$params->{$init_arg};", + '}'; +}; +no Moose::Role; 1;