bump version to 0.79
[gitmo/Moose.git] / lib / Moose / Meta / TypeCoercion / Union.pm
index 92d5d67..82a2eec 100644 (file)
@@ -5,10 +5,10 @@ use strict;
 use warnings;
 use metaclass;
 
-use Carp         'confess';
 use Scalar::Util 'blessed';
 
-our $VERSION   = '0.52';
+our $VERSION   = '0.79';
+$VERSION = eval $VERSION;
 our $AUTHORITY = 'cpan:STEVAN';
 
 use base 'Moose::Meta::TypeCoercion';
@@ -16,34 +16,35 @@ use base 'Moose::Meta::TypeCoercion';
 sub compile_type_coercion {
     my $self            = shift;
     my $type_constraint = $self->type_constraint;
-    
+
     (blessed $type_constraint && $type_constraint->isa('Moose::Meta::TypeConstraint::Union'))
-     || confess "You can only a Moose::Meta::TypeCoercion::Union for a " .
-                "Moose::Meta::TypeConstraint::Union, not a $type_constraint";
-    
+     || Moose->throw_error("You can only a Moose::Meta::TypeCoercion::Union for a " .
+                "Moose::Meta::TypeConstraint::Union, not a $type_constraint");
+
     $self->_compiled_type_coercion(sub {
         my $value = shift;
-        # go through all the type constraints 
+        # go through all the type constraints
         # in the union, and check em ...
         foreach my $type (@{$type_constraint->type_constraints}) {
             # if they have a coercion first
-            if ($type->has_coercion) {    
+            if ($type->has_coercion) {
                 # then try to coerce them ...
                 my $temp = $type->coerce($value);
-                # and if they get something 
+                # and if they get something
                 # make sure it still fits within
                 # the union type ...
                 return $temp if $type_constraint->check($temp);
             }
         }
-        return undef;    
+        return undef;
     });
 }
 
 sub has_coercion_for_type { 0 }
 
 sub add_type_coercions {
-    confess "Cannot add additional type coercions to Union types";
+    require Moose;
+    Moose->throw_error("Cannot add additional type coercions to Union types");
 }
 
 1;
@@ -58,32 +59,31 @@ Moose::Meta::TypeCoercion::Union - The Moose Type Coercion metaclass for Unions
 
 =head1 DESCRIPTION
 
-For the most part, the only time you will ever encounter an 
-instance of this class is if you are doing some serious deep 
-introspection. This API should not be considered final, but 
-it is B<highly unlikely> that this will matter to a regular 
-Moose user.
-
-If you wish to use features at this depth, please come to the 
-#moose IRC channel on irc.perl.org and we can talk :)
-
+This is a subclass of L<Moose::Meta::TypeCoercion> that is used for
+L<Moose::Meta::TypeConstraint::Union> objects.
 =head1 METHODS
 
 =over 4
 
-=item B<meta>
+=item B<< $coercion->has_coercion_for_type >>
+
+This method always returns false.
+
+=item B<< $coercion->add_type_coercions >>
 
-=item B<compile_type_coercion>
+This method always throws an error. You cannot add coercions to a
+union type coercion.
 
-=item B<has_coercion_for_type>
+=item B<< $coercion->coerce($value) >>
 
-=item B<add_type_coercions>
+This method will coerce by trying the coercions for each type in the
+union.
 
 =back
 
 =head1 BUGS
 
-All complex software has bugs lurking in it, and this module is no 
+All complex software has bugs lurking in it, and this module is no
 exception. If you find a bug please either email me, or add the bug
 to cpan-RT.
 
@@ -93,11 +93,11 @@ Stevan Little E<lt>stevan@iinteractive.comE<gt>
 
 =head1 COPYRIGHT AND LICENSE
 
-Copyright 2006-2008 by Infinity Interactive, Inc.
+Copyright 2006-2009 by Infinity Interactive, Inc.
 
 L<http://www.iinteractive.com>
 
 This library is free software; you can redistribute it and/or modify
-it under the same terms as Perl itself. 
+it under the same terms as Perl itself.
 
 =cut