bump version to 0.09
[gitmo/MooseX-UndefTolerant.git] / lib / MooseX / UndefTolerant.pm
index 3707141..f666558 100644 (file)
@@ -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.09';
+
+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<Moose> 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<has_foo>) 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<MooseX::UndefTolerant::Attribute>.
+
+=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<Moose::Meta::Method::Constructor>, not L<Moose::Meta::Attribute>. The good
+news is that this is expected to be changing shortly.
+
 =head1 AUTHOR
 
 Cory G Watson, C<< <gphat at cpan.org> >>