X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMouse.pm;h=29815cb895e7d47dc184ae1bb57af5f4fee792e1;hb=b4160dbe7bdfeacc3f559cf3eb9b792a5794a62b;hp=380d9b233b59144de787e5eaa490274d6283f55f;hpb=5f46c4bd0be3450c60b7405a5eb84f9bb9c221ac;p=gitmo%2FMouse.git diff --git a/lib/Mouse.pm b/lib/Mouse.pm index 380d9b2..29815cb 100644 --- a/lib/Mouse.pm +++ b/lib/Mouse.pm @@ -1,14 +1,23 @@ -#!/usr/bin/env perl package Mouse; use strict; use warnings; +use 5.006; use base 'Exporter'; -our $VERSION = '0.12'; +our $VERSION = '0.13'; use 5.006; +BEGIN { + if ($ENV{MOUSE_DEBUG}) { + *DEBUG = sub (){ 1 }; + } else { + *DEBUG = sub (){ 0 }; + } +} + use Carp 'confess'; -use Mouse::Util 'blessed'; +use Scalar::Util 'blessed'; +use Mouse::Util; use Mouse::Meta::Attribute; use Mouse::Meta::Class; @@ -66,17 +75,12 @@ sub around { } sub with { - my $meta = Mouse::Meta::Class->initialize(caller); - - my $role = shift; - - confess "Mouse::Role only supports 'with' on individual roles at a time" if @_; - - Mouse::load_class($role); - $role->meta->apply($meta); + Mouse::Util::apply_all_roles((caller)[0], @_); } sub import { + my $class = shift; + strict->import; warnings->import; @@ -90,7 +94,15 @@ sub import { no warnings 'redefine'; *{$caller.'::meta'} = sub { $meta }; - Mouse->export_to_level(1, @_); + if (@_) { + __PACKAGE__->export_to_level( 1, $class, @_); + } else { + # shortcut for the common case of no type character + no strict 'refs'; + for my $keyword (@EXPORT) { + *{ $caller . '::' . $keyword } = *{__PACKAGE__ . '::' . $keyword}; + } + } } sub unimport { @@ -110,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; @@ -401,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