add note about current limitations of usage.
[gitmo/MooseX-UndefTolerant.git] / lib / MooseX / UndefTolerant.pm
index b026bc1..f25b684 100644 (file)
@@ -4,11 +4,15 @@ use Moose qw();
 use Moose::Exporter;
 
 use MooseX::UndefTolerant::Attribute;
+use MooseX::UndefTolerant::Constructor;
 
-our $VERSION = '0.04';
+our $VERSION = '0.07';
 
 Moose::Exporter->setup_import_methods(
-    class_metaroles => { attribute => [ 'MooseX::UndefTolerant::Attribute' ] }
+    class_metaroles => { 
+           attribute => [ 'MooseX::UndefTolerant::Attribute' ],
+           constructor => [ 'MooseX::UndefTolerant::Constructor' ],
+    }
 );
 
 1;
@@ -17,7 +21,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 +60,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
@@ -82,9 +86,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
@@ -93,6 +97,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> >>