Update README based on latest pod
Dave Rolsky [Mon, 14 Mar 2011 18:40:43 +0000 (13:40 -0500)]
README

diff --git a/README b/README
index 58d1fbf..c88c928 100644 (file)
--- a/README
+++ b/README
-MooseX-UndefTolerant
+NAME
+    MooseX::UndefTolerant - Make your attribute(s) tolerant to undef
+    initialization
 
-The README is used to introduce the module and provide instructions on
-how to install the module, any machine dependencies it may have (for
-example C compilers and installed libraries) and any other information
-that should be provided before the module is installed.
+SYNOPSIS
+      package My::Class;
 
-A README file is required for CPAN modules since CPAN extracts the README
-file from a module distribution so that people browsing the archive
-can use it to get an idea of the module's uses. It is usually a good idea
-to provide version information here so that people can decide whether
-fixes for the module are worth downloading.
+      use Moose;
+      use MooseX::UndefTolerant;
 
+      has 'name' => (
+        is => 'ro',
+        isa => 'Str',
+        predicate => 'has_name'
+      );
 
-INSTALLATION
+      # Meanwhile, under the city...
 
-To install this module, run the following commands:
+      # Doesn't explode
+      my $class = My::Class->new(name => undef);
+      $class->has_name # False!
 
-       perl Makefile.PL
-       make
-       make test
-       make install
+    Or, if you only want one attribute to have this behaviour:
 
-SUPPORT AND DOCUMENTATION
+      package My:Class;
+      use Moose;
 
-After installing, you can find documentation for this module with the
-perldoc command.
+      use MooseX::UndefTolerant::Attribute;
 
-    perldoc MooseX::UndefTolerant
+      has 'bar' => (
+          traits => [ qw(MooseX::UndefTolerant::Attribute)],
+          is => 'ro',
+          isa => 'Num',
+          predicate => 'has_bar'
+      );
 
-You can also look for information at:
+DESCRIPTION
+    Loading this module in your 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 had not provided a value at all.
 
-    RT, CPAN's request tracker
-        http://rt.cpan.org/NoAuth/Bugs.html?Dist=MooseX-UndefTolerant
+MOTIVATION
+    I often found myself in this quandry:
 
-    AnnoCPAN, Annotated CPAN documentation
-        http://annocpan.org/dist/MooseX-UndefTolerant
+      package My:Class;
+      use Moose;
 
-    CPAN Ratings
-        http://cpanratings.perl.org/d/MooseX-UndefTolerant
+      has 'foo' => (
+        is => 'ro',
+        isa => 'Str',
+      );
 
-    Search CPAN
-        http://search.cpan.org/dist/MooseX-UndefTolerant/
+      # ... then
 
+      my $foo = ... # get the param from something
 
-COPYRIGHT AND LICENCE
+      my $class = My:Class->new(foo => $foo, bar => 123);
 
-Copyright (C) 2009 Cory G Watson
+    What if foo is undefined? I didn't want to change my attribute to be
+    Maybe[Str] and I still want my predicate ("has_foo") to work. The only
+    real solution was:
 
-This program is free software; you can redistribute it and/or modify it
-under the terms of either: the GNU General Public License as published
-by the Free Software Foundation; or the Artistic License.
+      if(defined($foo)) {
+        $class = My:Class->new(foo => $foo, bar => 123);
+      } else {
+        $class = My:Class->new(bar => 123);
+      }
 
-See http://dev.perl.org/licenses/ for more information.
+    Or some type of codemulch using ternarys. This module allows you to make
+    your attributes more tolerant of undef so that you can keep the first
+    example: have your cake and eat it too!
+
+PER ATTRIBUTE
+    See MooseX::UndefTolerant::Attribute.
+
+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 Moose::Meta::Method::Constructor, not Moose::Meta::Attribute. The
+    good news is that this is expected to be changing shortly.
+
+ACKNOWLEDGEMENTS
+    Many thanks to the crew in #moose who talked me through this module:
+
+    Hans Dieter Pearcey (confound)
+
+    Jesse Luehrs (doy)
+
+    Tomas Doran (t0m)
+
+    Dylan Hardison (dylan)
+
+    Jay Shirley (jshirley)
+
+    Mike Eldridge (diz)
+
+AUTHOR
+    Cory G Watson <gphat at cpan.org>
+
+COPYRIGHT AND LICENSE
+    This software is copyright (c) 2011 by Cory G Watson.
+
+    This is free software; you can redistribute it and/or modify it under
+    the same terms as the Perl 5 programming language system itself.