X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMouse.pm;h=5f6ea376450f40f135b2044f8c1ab824a7250fbf;hb=c4ec764243251d46cffa30ae028beef530b0a432;hp=c55e05350a35e79994fc0f17b308acf9154fe71b;hpb=e6007308abd5bc18fc86ed19d68732488750493f;p=gitmo%2FMouse.git diff --git a/lib/Mouse.pm b/lib/Mouse.pm index c55e053..5f6ea37 100644 --- a/lib/Mouse.pm +++ b/lib/Mouse.pm @@ -4,15 +4,7 @@ use warnings; use 5.006; use base 'Exporter'; -our $VERSION = '0.15'; - -BEGIN { - if ($ENV{MOUSE_DEBUG}) { - *DEBUG = sub (){ 1 }; - } else { - *DEBUG = sub (){ 0 }; - } -} +our $VERSION = '0.19'; use Carp 'confess'; use Scalar::Util 'blessed'; @@ -29,18 +21,7 @@ sub extends { Mouse::Meta::Class->initialize(caller)->superclasses(@_) } sub has { my $meta = Mouse::Meta::Class->initialize(caller); - - my $names = shift; - $names = [$names] if !ref($names); - - for my $name (@$names) { - if ($name =~ s/^\+//) { - Mouse::Meta::Attribute->clone_parent($meta, $name, @_); - } - else { - Mouse::Meta::Attribute->create($meta, $name, @_); - } - } + $meta->add_attribute(@_); } sub before { @@ -113,7 +94,16 @@ sub import { strict->import; warnings->import; - my $caller = caller; + my $opts = do { + if (ref($_[0]) && ref($_[0]) eq 'HASH') { + shift @_; + } else { + +{ }; + } + }; + my $level = delete $opts->{into_level}; + $level = 0 unless defined $level; + my $caller = caller($level); # we should never export to main if ($caller eq 'main') { @@ -130,7 +120,7 @@ sub import { *{$caller.'::meta'} = sub { $meta }; if (@_) { - __PACKAGE__->export_to_level( 1, $class, @_); + __PACKAGE__->export_to_level( $level+1, $class, @_); } else { # shortcut for the common case of no type character no strict 'refs'; @@ -244,11 +234,9 @@ Mouse aims to alleviate this by providing a subset of Moose's functionality, faster. In particular, L is missing only a few expert-level features. -We're also going as light on dependencies as possible. Most functions we use -from L are copied into this dist. L is required if -you'd like weak references; there's simply no way to do it from pure Perl. -L is required if you want support for L, -L, and L. +We're also going as light on dependencies as possible. +L or L is required if you want support +for L, L, and L. =head2 MOOSE COMPAT @@ -261,8 +249,7 @@ The idea is that, if you need the extra power, you should be able to run C on your codebase and have nothing break. To that end, nothingmuch has written L (part of this distribution) which will act as Mouse unless Moose is loaded, in which case it will act as Moose. - -Mouse also has the blessings of Moose's author, stevan. +L is a more high-tech L. =head2 MouseX