class_of TCs
[gitmo/Moose.git] / lib / Moose.pm
index fb6b94a..3578db6 100644 (file)
@@ -6,16 +6,16 @@ use warnings;
 
 use 5.008;
 
-our $VERSION   = '0.65';
+our $VERSION   = '0.73';
 $VERSION = eval $VERSION;
 our $AUTHORITY = 'cpan:STEVAN';
 
 use Scalar::Util 'blessed';
-use Carp         'confess', 'croak', 'cluck';
+use Carp         'confess';
 
 use Moose::Exporter;
 
-use Class::MOP 0.76;
+use Class::MOP 0.78_02;
 
 use Moose::Meta::Class;
 use Moose::Meta::TypeConstraint;
@@ -52,15 +52,13 @@ sub throw_error {
 sub extends {
     my $class = shift;
 
-    croak "Must derive at least one class" unless @_;
+    Moose->throw_error("Must derive at least one class") unless @_;
 
     my @supers = @_;
     foreach my $super (@supers) {
-        Class::MOP::load_class($super);
-        croak "You cannot inherit from a Moose Role ($super)"
-            if $super->can('meta')  && 
-               blessed $super->meta &&
-               $super->meta->isa('Moose::Meta::Role')
+        my $meta = Class::MOP::load_class($super);
+        Moose->throw_error("You cannot inherit from a Moose Role ($super)")
+            if $meta && $meta->isa('Moose::Meta::Role')
     }
 
 
@@ -80,7 +78,10 @@ sub with {
 sub has {
     my $class = shift;
     my $name  = shift;
-    croak 'Usage: has \'name\' => ( key => value, ... )' if @_ == 1;
+
+    Moose->throw_error('Usage: has \'name\' => ( key => value, ... )')
+        if @_ == 1;
+
     my %options = ( definition_context => _caller_info(), @_ );
     my $attrs = ( ref($name) eq 'ARRAY' ) ? $name : [ ($name) ];
     Class::MOP::Class->initialize($class)->add_attribute( $_, %options ) for @$attrs;
@@ -270,7 +271,7 @@ $_->make_immutable(
     Moose::Meta::Method::Accessor
     Moose::Meta::Method::Constructor
     Moose::Meta::Method::Destructor
-    Moose::Meta::Method::Overriden
+    Moose::Meta::Method::Overridden
     Moose::Meta::Method::Augmented
 
     Moose::Meta::Role
@@ -337,9 +338,9 @@ metaclass programming as well.
 
 =head2 New to Moose?
 
-If you're new to Moose, the best place to start is the L<Moose::Intro>
-docs, followed by the L<Moose::Cookbook>. The intro will show you what
-Moose is, and how it makes Perl 5 OO better.
+If you're new to Moose, the best place to start is the
+L<Moose::Manual> docs, followed by the L<Moose::Cookbook>. The intro
+will show you what Moose is, and how it makes Perl 5 OO better.
 
 The cookbook recipes on Moose basics will get you up to speed with
 many of Moose's features quickly. Once you have an idea of what Moose
@@ -471,11 +472,10 @@ This is only legal if your C<isa> option is either C<ArrayRef> or C<HashRef>.
 
 =item I<trigger =E<gt> $code>
 
-The I<trigger> option is a CODE reference which will be called after the value of
-the attribute is set. The CODE ref will be passed the instance itself, the
-updated value and the attribute meta-object (this is for more advanced fiddling
-and can typically be ignored). You B<cannot> have a trigger on a read-only
-attribute. 
+The I<trigger> option is a CODE reference which will be called after
+the value of the attribute is set. The CODE ref will be passed the
+instance itself and the updated value. You B<cannot> have a trigger on
+a read-only attribute.
 
 B<NOTE:> Triggers will only fire when you B<assign> to the attribute,
 either in the constructor, or using the writer. Default and built values will
@@ -619,7 +619,7 @@ example.
 The value of this key is the name of the method that will be called to
 obtain the value used to initialize the attribute. See the L<builder
 option docs in Class::MOP::Attribute|Class::MOP::Attribute/builder>
-for more information.
+ and/or L<Moose::Cookbook::Basics::Recipe9> for more information.
 
 =item I<default> => SCALAR | CODE
 
@@ -634,16 +634,15 @@ information.
 
 =item I<clearer> => Str
 
-Allows you to clear the value, see the L<clearer option docs in
-Class::MOP::Attribute|Class::MOP::Attribute/clearer> for more
+Creates a method allowing you to clear the value, see the L<clearer option
+docs in Class::MOP::Attribute|Class::MOP::Attribute/clearer> for more
 information.
 
 =item I<predicate> => Str
 
-Basic test to see if a value has been set in the attribute, see the
-L<predicate option docs in
-Class::MOP::Attribute|Class::MOP::Attribute/predicate> for more
-information.
+Creates a method to perform a basic test to see if a value has been set in the
+attribute, see the L<predicate option docs in
+Class::MOP::Attribute|Class::MOP::Attribute/predicate> for more information.
 
 =item I<lazy_build> => (0|1)
 
@@ -763,7 +762,7 @@ B<not> allowed to I<change> one.
 =item I<traits>
 
 You are allowed to B<add> additional traits to the C<traits> definition.
-These traits will be composed into the attribute, but pre-existing traits
+These traits will be composed into the attribute, but preexisting traits
 B<are not> overridden, or removed.
 
 =back
@@ -829,7 +828,7 @@ This is very similar to the attribute traits feature. When you do
 this, your class's C<meta> object will have the specified traits
 applied to it. See L<TRAIT NAME RESOLUTION> for more details.
 
-=head1 TRAIT NAME RESOLUTION
+=head2 Trait Name Resolution
 
 By default, when given a trait name, Moose simply tries to load a
 class of the same name. If such a class does not exist, it then looks
@@ -883,7 +882,7 @@ specified by C<for_class>. This method injects a a C<meta> accessor
 into the class so you can get at this object. It also sets the class's
 superclass to C<base_class>, with L<Moose::Object> as the default.
 
-You can specify an alternate metaclass with the C<metaclass> parameter.
+You can specify an alternate metaclass with the C<metaclass> option.
 
 For more detail on this topic, see L<Moose::Cookbook::Extending::Recipe2>.
 
@@ -1016,7 +1015,7 @@ early ideas/feature-requests/encouragement/bug-finding.
 
 =item L<http://www.iinteractive.com/moose>
 
-This is the official web home of Moose, it contains links to our public SVN repo
+This is the official web home of Moose, it contains links to our public SVN repository
 as well as links to a number of talks and articles on Moose and Moose related
 technologies.
 
@@ -1070,7 +1069,9 @@ the user-visible features. Instead we have made sure that the underlying
 meta-system of Moose is as extensible as possible so that you can add your 
 own features easily. That said, occasionally there is a feature needed in the 
 meta-system to support your planned extension, in which case you should 
-either email the mailing list or join us on irc at #moose to discuss.
+either email the mailing list or join us on irc at #moose to discuss. The
+L<Moose::Manual::Contributing> has more detail about how and when you can
+contribute.
 
 =head1 AUTHOR
 
@@ -1101,7 +1102,7 @@ Adam (Alias) Kennedy
 
 Anders (Debolaz) Nor Berle
 
-Nathan (kolibre) Gray
+Nathan (kolibrie) Gray
 
 Christian (chansen) Hansen