use 5.006;
use base 'Exporter';
-our $VERSION = '0.30';
+our $VERSION = '0.32';
+
+sub moose_version(){ 0.90 } # which Mouse is a subset of
use Carp 'confess';
use Scalar::Util 'blessed';
+
use Mouse::Util qw(load_class is_class_loaded);
-use Mouse::Meta::Attribute;
-use Mouse::Meta::Module; # class_of()
+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);
delete $is_removable{blessed};
delete $is_removable{confess};
-sub extends { Mouse::Meta::Class->initialize(caller)->superclasses(@_) }
+sub extends { Mouse::Meta::Class->initialize(scalar caller)->superclasses(@_) }
sub has {
- my $meta = Mouse::Meta::Class->initialize(caller);
+ my $meta = Mouse::Meta::Class->initialize(scalar caller);
$meta->add_attribute(@_);
}
sub before {
- my $meta = Mouse::Meta::Class->initialize(caller);
+ my $meta = Mouse::Meta::Class->initialize(scalar caller);
my $code = pop;
}
sub after {
- my $meta = Mouse::Meta::Class->initialize(caller);
+ my $meta = Mouse::Meta::Class->initialize(scalar caller);
my $code = pop;
}
sub around {
- my $meta = Mouse::Meta::Class->initialize(caller);
+ my $meta = Mouse::Meta::Class->initialize(scalar caller);
my $code = pop;
}
sub with {
- Mouse::Util::apply_all_roles((caller)[0], @_);
+ Mouse::Util::apply_all_roles(scalar(caller), @_);
}
our $SUPER_PACKAGE;
}
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],
- );
- }
-
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;
}
return;
}
- Mouse->init_meta(
+ $class->init_meta(
for_class => $caller,
);
wu-lee
+Goro Fuji (gfx) C<< <gfuji at cpan.org> >>
+
with plenty of code borrowed from L<Class::MOP> and L<Moose>
=head1 BUGS