X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMoose.pm;h=3578db6dd3947625ea423ad27b43303a36180f68;hb=7d27ee95015137f217721e02121a92c90e63a19d;hp=6538b43819979869812b6357f7a0218635c646e5;hpb=aa7bbf26111ba4ed260458857f0a9cf007511bd4;p=gitmo%2FMoose.git diff --git a/lib/Moose.pm b/lib/Moose.pm index 6538b43..3578db6 100644 --- a/lib/Moose.pm +++ b/lib/Moose.pm @@ -6,16 +6,16 @@ use warnings; use 5.008; -our $VERSION = '0.66'; +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 -docs, followed by the L. 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 docs, followed by the L. 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 option is either C or C. =item I $code> -The I 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 have a trigger on a read-only -attribute. +The I 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 have a trigger on +a read-only attribute. B Triggers will only fire when you B 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 -for more information. + and/or L for more information. =item I => SCALAR | CODE @@ -762,7 +762,7 @@ B allowed to I one. =item I You are allowed to B additional traits to the C 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 overridden, or removed. =back @@ -828,7 +828,7 @@ This is very similar to the attribute traits feature. When you do this, your class's C object will have the specified traits applied to it. See L 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 @@ -882,7 +882,7 @@ specified by C. This method injects a a C accessor into the class so you can get at this object. It also sets the class's superclass to C, with L as the default. -You can specify an alternate metaclass with the C parameter. +You can specify an alternate metaclass with the C option. For more detail on this topic, see L. @@ -1015,7 +1015,7 @@ early ideas/feature-requests/encouragement/bug-finding. =item L -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. @@ -1069,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 has more detail about how and when you can +contribute. =head1 AUTHOR @@ -1100,7 +1102,7 @@ Adam (Alias) Kennedy Anders (Debolaz) Nor Berle -Nathan (kolibre) Gray +Nathan (kolibrie) Gray Christian (chansen) Hansen