X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMouse.pm;h=29815cb895e7d47dc184ae1bb57af5f4fee792e1;hb=9dcd7d2378107301c0f815a407b3b4e55c2909f8;hp=e1b01871a333f9c0ff6199d832bddfd1334a21a3;hpb=e15d73d2969213b7c24ee8d01518746a7da40860;p=gitmo%2FMouse.git diff --git a/lib/Mouse.pm b/lib/Mouse.pm index e1b0187..29815cb 100644 --- a/lib/Mouse.pm +++ b/lib/Mouse.pm @@ -1,37 +1,23 @@ - package Mouse; use strict; use warnings; use 5.006; use base 'Exporter'; -our $VERSION; -our $PurePerl; +our $VERSION = '0.13'; +use 5.006; BEGIN { - $VERSION = '0.12'; - if ($ENV{MOUSE_DEBUG}) { *DEBUG = sub (){ 1 }; } else { *DEBUG = sub (){ 0 }; } - - if (! defined $PurePerl && $ENV{MOUSE_PUREPERL} && $ENV{MOUSE_PUREPERL} =~ /^(.+)$/) { - $PurePerl = $1; - } - - if (! $PurePerl) { - local $@; - local $^W = 0; - require XSLoader; - $PurePerl = ! eval{ XSLoader::load(__PACKAGE__, $VERSION); 1 }; - warn "Failed to load XS mode: $@" if $@; # && Mouse::DEBUG(); - } } use Carp 'confess'; -use Mouse::Util 'blessed'; +use Scalar::Util 'blessed'; +use Mouse::Util; use Mouse::Meta::Attribute; use Mouse::Meta::Class; @@ -89,15 +75,7 @@ sub around { } sub with { - my $meta = Mouse::Meta::Class->initialize(caller); - - my $role = shift; - my $args = shift || {}; - - confess "Mouse::Role only supports 'with' on individual roles at a time" if @_ || !ref $args; - - Mouse::load_class($role); - $role->meta->apply($meta, %$args); + Mouse::Util::apply_all_roles((caller)[0], @_); } sub import { @@ -144,6 +122,7 @@ sub load_class { confess "Invalid class name ($display)"; } + return 1 if $class eq 'Mouse::Object'; return 1 if is_class_loaded($class); (my $file = "$class.pm") =~ s{::}{/}g; @@ -435,12 +414,16 @@ Returns whether this class is actually loaded or not. It uses a heuristic which involves checking for the existence of C<$VERSION>, C<@ISA>, and any locally-defined method. -=head1 AUTHOR +=head1 AUTHORS Shawn M Moore, C<< >> Yuval Kogman, C<< >> +tokuhirom + +Yappo + with plenty of code borrowed from L and L =head1 BUGS