X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMoose.pm;h=ce94027e89fd49fb13d412b052d984ffcda0fcdd;hb=113d3174264db82cb788bc846f617584072cba39;hp=a125d383aa534d8b30f1ec3a27ed8347cf205aa1;hpb=8251d681e79f79c4dff0eaab2e013b6f07c9b961;p=gitmo%2FMoose.git diff --git a/lib/Moose.pm b/lib/Moose.pm index a125d38..ce94027 100644 --- a/lib/Moose.pm +++ b/lib/Moose.pm @@ -4,7 +4,7 @@ use warnings; use 5.008; -our $VERSION = '0.88'; +our $VERSION = '0.91'; $VERSION = eval $VERSION; our $AUTHORITY = 'cpan:STEVAN'; @@ -13,7 +13,7 @@ use Carp 'confess'; use Moose::Exporter; -use Class::MOP 0.92; +use Class::MOP 0.93; use Moose::Meta::Class; use Moose::Meta::TypeConstraint; @@ -34,6 +34,8 @@ use Moose::Meta::Role::Application::ToInstance; use Moose::Util::TypeConstraints; use Moose::Util (); +use Moose::Meta::Attribute::Native; + sub throw_error { # FIXME This shift; @@ -41,46 +43,42 @@ sub throw_error { } sub extends { - my $class = shift; + my $meta = shift; Moose->throw_error("Must derive at least one class") unless @_; # this checks the metaclass to make sure # it is correct, sometimes it can get out # of sync when the classes are being built - Moose::Meta::Class->initialize($class)->superclasses(@_); + $meta->superclasses(@_); } sub with { - my $class = shift; - Moose::Util::apply_all_roles(Class::MOP::Class->initialize($class), @_); + Moose::Util::apply_all_roles(shift, @_); } sub has { - my $class = shift; - my $name = shift; + my $meta = shift; + my $name = shift; Moose->throw_error('Usage: has \'name\' => ( key => value, ... )') if @_ % 2 == 1; my %options = ( definition_context => Moose::Util::_caller_info(), @_ ); my $attrs = ( ref($name) eq 'ARRAY' ) ? $name : [ ($name) ]; - Class::MOP::Class->initialize($class)->add_attribute( $_, %options ) for @$attrs; + $meta->add_attribute( $_, %options ) for @$attrs; } sub before { - my $class = shift; - Moose::Util::add_method_modifier($class, 'before', \@_); + Moose::Util::add_method_modifier(shift, 'before', \@_); } sub after { - my $class = shift; - Moose::Util::add_method_modifier($class, 'after', \@_); + Moose::Util::add_method_modifier(shift, 'after', \@_); } sub around { - my $class = shift; - Moose::Util::add_method_modifier($class, 'around', \@_); + Moose::Util::add_method_modifier(shift, 'around', \@_); } our $SUPER_PACKAGE; @@ -95,9 +93,9 @@ sub super { } sub override { - my $class = shift; + my $meta = shift; my ( $name, $method ) = @_; - Class::MOP::Class->initialize($class)->add_override_method_modifier( $name => $method ); + $meta->add_override_method_modifier( $name => $method ); } sub inner { @@ -115,14 +113,14 @@ sub inner { } sub augment { - my $class = shift; + my $meta = shift; my ( $name, $method ) = @_; - Class::MOP::Class->initialize($class)->add_augment_method_modifier( $name => $method ); + $meta->add_augment_method_modifier( $name => $method ); } Moose::Exporter->setup_import_methods( - with_caller => [ - qw( extends with has before after around override augment) + with_meta => [ + qw( extends with has before after around override augment ) ], as_is => [ qw( super inner ), @@ -173,7 +171,7 @@ sub init_meta { my $ancestor_meta = Class::MOP::get_metaclass_by_name($ancestor) || next; my $ancestor_meta_class = ($ancestor_meta->is_immutable - ? $ancestor_meta->get_mutable_metaclass_name + ? $ancestor_meta->_get_mutable_metaclass_name : ref($ancestor_meta)); # if we have an ancestor metaclass that inherits $metaclass, we use @@ -337,6 +335,16 @@ is to search for them (L), or to examine L which aims to keep an up-to-date, easily installable list of Moose extensions. +=head1 TRANSLATIONS + +Much of the Moose documentation has been translated into other languages. + +=over 4 + +=item L + +=back + =head1 BUILDING CLASSES WITH MOOSE Moose makes every attempt to provide as much convenience as possible during @@ -540,6 +548,18 @@ In this example, the Tree package gets C and C methods, which delegate to the C and C methods (respectively) of the Tree instance stored in the C slot. +You may also use an array reference to curry arguments to the original method. + + has 'thing' => ( + ... + handles => { set_foo => [ set => 'foo' ] }, + ); + + # $self->set_foo(...) calls $self->thing->set('foo', ...) + +The first element of the array reference is the original method name, and the +rest is a list of curried arguments. + =item C The regexp option works very similar to the ARRAY option, except that it builds @@ -607,7 +627,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 - and/or L for more information. + and/or L for more information. =item I => SCALAR | CODE @@ -1107,6 +1127,14 @@ Shawn (sartak) Moore Esartak@bestpractical.comE Dave (autarch) Rolsky Eautarch@urth.orgE +Jesse (doy) Luehrs Edoy at tozt dot netE + +Hans Dieter (confound) Pearcey Ehdp@pobox.comE + +Chris (perigrin) Prather + +Florian Ragwitz Erafl@debian.orgE + =head2 OTHER CONTRIBUTORS Aankhen @@ -1119,8 +1147,6 @@ Nathan (kolibrie) Gray Christian (chansen) Hansen -Hans Dieter (confound) Pearcey - Eric (ewilhelm) Wilhelm Guillermo (groditi) Roditi @@ -1137,8 +1163,6 @@ Scott (konobi) McWhirter Shlomi (rindolf) Fish -Chris (perigrin) Prather - Wallace (wreis) Reis Jonathan (jrockway) Rockway