X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=gitmo%2FMouse.git;a=blobdiff_plain;f=lib%2FMouse.pm;h=af7bebc0e4cd0f8ea9b0786cc1750f7e8078d6ba;hp=771d32e6142cbde7913175327816dbf6d86cc185;hb=121acb8a89acd75e7a664241df7e8220d864c879;hpb=f6e5adac67578b48faa24c78a44532fa0c0f39ad diff --git a/lib/Mouse.pm b/lib/Mouse.pm index 771d32e..af7bebc 100644 --- a/lib/Mouse.pm +++ b/lib/Mouse.pm @@ -4,19 +4,29 @@ use warnings; use 5.006; use base 'Exporter'; -our $VERSION = '0.31'; +our $VERSION = '0.32'; use Carp 'confess'; use Scalar::Util 'blessed'; -use Mouse::Util qw(load_class is_class_loaded); -use Mouse::Meta::Attribute; +use Mouse::Util qw(load_class is_class_loaded not_supported); + use Mouse::Meta::Module; use Mouse::Meta::Class; +use Mouse::Meta::Role; +use Mouse::Meta::Attribute; use Mouse::Object; -use Mouse::Util::TypeConstraints; +use Mouse::Util::TypeConstraints (); -our @EXPORT = qw(extends has before after around override super blessed confess with); +our @EXPORT = qw( + extends with + has + before after around + override super + augment inner + + blessed confess +); our %is_removable = map{ $_ => undef } @EXPORT; delete $is_removable{blessed}; @@ -93,41 +103,33 @@ sub override { }); } -sub init_meta { - # This used to be called as a function. This hack preserves - # backwards compatibility. - if ( $_[0] ne __PACKAGE__ ) { - return __PACKAGE__->init_meta( - for_class => $_[0], - base_class => $_[1], - metaclass => $_[2], - ); - } +sub inner { not_supported } +sub augment{ not_supported } +sub init_meta { shift; my %args = @_; my $class = $args{for_class} - or Carp::croak( - "Cannot call init_meta without specifying a for_class"); + or confess("Cannot call init_meta without specifying a for_class"); my $base_class = $args{base_class} || 'Mouse::Object'; my $metaclass = $args{metaclass} || 'Mouse::Meta::Class'; - Carp::croak("The Metaclass $metaclass must be a subclass of Mouse::Meta::Class.") + confess("The Metaclass $metaclass must be a subclass of Mouse::Meta::Class.") unless $metaclass->isa('Mouse::Meta::Class'); - + # make a subtype for each Mouse class - class_type($class) - unless find_type_constraint($class); + Mouse::Util::TypeConstraints::class_type($class) + unless Mouse::Util::TypeConstraints::find_type_constraint($class); my $meta = $metaclass->initialize($class); - $meta->superclasses($base_class) - unless $meta->superclasses; $meta->add_method(meta => sub{ - return Mouse::Meta::Class->initialize(ref($_[0]) || $_[0]); + return $metaclass->initialize(ref($_[0]) || $_[0]); }); + $meta->superclasses($base_class) + unless $meta->superclasses; return $meta; } @@ -155,7 +157,7 @@ sub import { return; } - Mouse->init_meta( + $class->init_meta( for_class => $caller, );