X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=gitmo%2FMooseX-UndefTolerant.git;a=blobdiff_plain;f=lib%2FMooseX%2FUndefTolerant.pm;h=f666558bbe946537f67ad623854eac16cfe38d81;hp=b026bc1c0e2440ac15693e6df501d34185dc1b09;hb=7e9c113df7e76c2009e9c48f9d4d3ca6c18bc690;hpb=faddd0f15c1461d9d184cc41741ce0a492847a9d diff --git a/lib/MooseX/UndefTolerant.pm b/lib/MooseX/UndefTolerant.pm index b026bc1..f666558 100644 --- a/lib/MooseX/UndefTolerant.pm +++ b/lib/MooseX/UndefTolerant.pm @@ -4,11 +4,22 @@ use Moose qw(); use Moose::Exporter; use MooseX::UndefTolerant::Attribute; +use MooseX::UndefTolerant::Class; +use MooseX::UndefTolerant::Constructor; + +our $VERSION = '0.09'; + +my %metaroles = ( attribute => [ 'MooseX::UndefTolerant::Attribute' ] ); +if ( $Moose::VERSION < 1.9900 ) { + $metaroles{constructor} = [ 'MooseX::UndefTolerant::Constructor' ]; +} +else { + $metaroles{class} = [ 'MooseX::UndefTolerant::Class' ]; +} -our $VERSION = '0.04'; Moose::Exporter->setup_import_methods( - class_metaroles => { attribute => [ 'MooseX::UndefTolerant::Attribute' ] } + class_metaroles => \%metaroles, ); 1; @@ -17,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 @@ -56,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 @@ -82,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 @@ -93,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<< >>