X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMouse.pm;h=0606dcb36132897c39f0fd4f9e5a94c4e0c97629;hb=c1d04abf5d8c4781602cff2b7fa354544d3603f4;hp=32ee7ab673265dd1ff1f315a7a86f2ae19d6bbea;hpb=21498b08feb4f9e5f74670eafe293adcbf3cdd29;p=gitmo%2FMouse.git diff --git a/lib/Mouse.pm b/lib/Mouse.pm index 32ee7ab..0606dcb 100644 --- a/lib/Mouse.pm +++ b/lib/Mouse.pm @@ -1,37 +1,22 @@ - package Mouse; use strict; use warnings; use 5.006; use base 'Exporter'; -our $VERSION; -our $PurePerl; +our $VERSION = '0.15'; 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; @@ -136,6 +121,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; @@ -242,33 +228,6 @@ as Mouse unless Moose is loaded, in which case it will act as Moose. Mouse also has the blessings of Moose's author, stevan. -=head2 MISSING FEATURES - -=head3 Roles - -We're working on fixing this one! stevan has suggested an implementation -strategy. Mouse currently ignores methods, so that needs to be fixed next. -Roles that consist entirely of attributes may be usable in this very version. - -=head3 Complex types - -User-defined type constraints and parameterized types may be implemented. Type -coercions probably not (patches welcome). - -=head3 Bootstrapped meta world - -Very handy for extensions to the MOP. Not pressing, but would be nice to have. - -=head3 Modification of attribute metaclass - -When you declare an attribute with L, you get the inlined accessors -installed immediately. Modifying the attribute metaclass, even if possible, -does nothing. - -=head3 Lots more.. - -MouseX? - =head1 KEYWORDS =head2 meta -> Mouse::Meta::Class @@ -427,12 +386,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