X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMoose.pm;h=f2f7b788e3c858cc44f9ae6b9cee6db88ab333cb;hb=7d93ec414e0d301292d89be61c5845152ab1b913;hp=f1e7c866bb2d59c79cb03fedd5c876028ef01977;hpb=8c63a5c80c598918174f5964e83d774ec884fd83;p=gitmo%2FMoose.git diff --git a/lib/Moose.pm b/lib/Moose.pm index f1e7c86..f2f7b78 100644 --- a/lib/Moose.pm +++ b/lib/Moose.pm @@ -6,7 +6,7 @@ use warnings; use 5.008; -our $VERSION = '0.63'; +our $VERSION = '0.65'; $VERSION = eval $VERSION; our $AUTHORITY = 'cpan:STEVAN'; @@ -15,7 +15,7 @@ use Carp 'confess', 'croak', 'cluck'; use Moose::Exporter; -use Class::MOP 0.71_02; +use Class::MOP 0.76; use Moose::Meta::Class; use Moose::Meta::TypeConstraint; @@ -36,6 +36,13 @@ use Moose::Meta::Role::Application::ToInstance; use Moose::Util::TypeConstraints; use Moose::Util (); +sub _caller_info { + my $level = @_ ? ($_[0] + 1) : 2; + my %info; + @info{qw(package file line)} = caller($level); + return \%info; +} + sub throw_error { # FIXME This shift; @@ -74,7 +81,7 @@ sub has { my $class = shift; my $name = shift; croak 'Usage: has \'name\' => ( key => value, ... )' if @_ == 1; - my %options = @_; + my %options = ( definition_context => _caller_info(), @_ ); my $attrs = ( ref($name) eq 'ARRAY' ) ? $name : [ ($name) ]; Class::MOP::Class->initialize($class)->add_attribute( $_, %options ) for @$attrs; } @@ -94,8 +101,15 @@ sub around { Moose::Util::add_method_modifier($class, 'around', \@_); } +our $SUPER_PACKAGE; +our $SUPER_BODY; +our @SUPER_ARGS; + sub super { - return unless our $SUPER_BODY; $SUPER_BODY->(our @SUPER_ARGS); + # This check avoids a recursion loop - see + # t/100_bugs/020_super_recursion.t + return if defined $SUPER_PACKAGE && $SUPER_PACKAGE ne caller(); + return unless $SUPER_BODY; $SUPER_BODY->(@SUPER_ARGS); } sub override { @@ -620,16 +634,15 @@ information. =item I => Str -Allows you to clear the value, see the L for more +Creates a method allowing you to clear the value, see the L for more information. =item I => Str -Basic test to see if a value has been set in the attribute, see the -L 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 for more information. =item I => (0|1) @@ -963,6 +976,18 @@ not (UPDATE: so far so good). =back +=head1 GETTING HELP + +We offer both a mailing list and a very active IRC channel. + +The mailing list is L. You must be subscribed to send +a message. To subscribe, send an empty message to +L + +You can also visit us at L<#moose on +irc.perl.org|irc://irc.perl.org/#moose>. This channel is quite active, +and questions at all levels (on Moose-related topics ;) are welcome. + =head1 ACKNOWLEDGEMENTS =over 4 @@ -994,26 +1019,18 @@ This is the official web home of Moose, it contains links to our public SVN repo as well as links to a number of talks and articles on Moose and Moose related technologies. -=item L - How to cook a Moose - =item The Moose is flying, a tutorial by Randal Schwartz Part 1 - L Part 2 - L -=item L documentation - -=item The #moose channel on irc.perl.org - -=item The Moose mailing list - moose@perl.org - -=item Moose stats on ohloh.net - L - =item Several Moose extension modules in the C namespace. See L for extensions. +=item Moose stats on ohloh.net - L + =back =head2 Books @@ -1115,11 +1132,13 @@ Piotr (dexter) Roszatycki Sam (mugwump) Vilain +Cory (gphat) Watson + ... and many other #moose folks =head1 COPYRIGHT AND LICENSE -Copyright 2006-2008 by Infinity Interactive, Inc. +Copyright 2006-2009 by Infinity Interactive, Inc. L