X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMooseX%2FUndefTolerant.pm;h=f76117e664bda7aaeca06d49e1f6fc6bcd66c3f8;hb=d6ce838b149668ac59c654aa996c3915c311507c;hp=37071415275a8eed7ee703dbf098912a35696d17;hpb=2d1c57bd726cc5ecf2aba441912a9163a74ceb1a;p=gitmo%2FMooseX-UndefTolerant.git diff --git a/lib/MooseX/UndefTolerant.pm b/lib/MooseX/UndefTolerant.pm index 3707141..f76117e 100644 --- a/lib/MooseX/UndefTolerant.pm +++ b/lib/MooseX/UndefTolerant.pm @@ -4,15 +4,22 @@ use Moose qw(); use Moose::Exporter; use MooseX::UndefTolerant::Attribute; +use MooseX::UndefTolerant::Class; use MooseX::UndefTolerant::Constructor; -our $VERSION = '0.04'; +our $VERSION = '0.07'; + +my %metaroles = ( attribute => [ 'MooseX::UndefTolerant::Attribute' ] ); +if ( $Moose::VERSION < 1.9900 ) { + $metaroles{constructor} = [ 'MooseX::UndefTolerant::Constructor' ]; +} +else { + $metaroles{class} = [ 'MooseX::UndefTolerant::Class' ]; +} + Moose::Exporter->setup_import_methods( - class_metaroles => { - attribute => [ 'MooseX::UndefTolerant::Attribute' ], - constructor => [ 'MooseX::UndefTolerant::Constructor' ], - } + class_metaroles => \%metaroles, ); 1; @@ -21,7 +28,7 @@ __END__ =head1 NAME -MooseX::UndefTolerant - Make your attribute(s) tolerant to undef intitialization +MooseX::UndefTolerant - Make your attribute(s) tolerant to undef initialization =head1 SYNOPSIS @@ -60,7 +67,7 @@ Or, if you only want one attribute to have this behaviour: Loading this module in your L class makes initialization of your attributes tolerant of undef. If you specify the value of undef to any of -the attributes they will not be initialized. Effectively behaving as if you +the attributes they will not be initialized, effectively behaving as if you had not provided a value at all. =head1 MOTIVATION @@ -86,9 +93,9 @@ Maybe[Str] and I still want my predicate (C) to work. The only real solution was: if(defined($foo)) { - $class = My:CLass->new(foo => $foo, bar => 123); + $class = My:Class->new(foo => $foo, bar => 123); } else { - $class = My:CLass->new(bar => 123); + $class = My:Class->new(bar => 123); } Or some type of codemulch using ternarys. This module allows you to make @@ -97,6 +104,16 @@ example: have your cake and eat it too! =head1 PER ATTRIBUTE +See L. + +=head1 CAVEATS + +This extension does not currently work in immutable classes when applying the +trait to some (but not all) attributes in the class. This is because the +inlined constructor initialization code currently lives in +L, not L. The good +news is that this is expected to be changing shortly. + =head1 AUTHOR Cory G Watson, C<< >>