package Mouse::Role;
-use Mouse::Util qw(not_supported); # enables strict and warnings
+use Mouse::Exporter; # enables strict and warnings
-use Carp ();
-use Scalar::Util ();
+our $VERSION = '0.40_01';
+use Carp qw(confess);
+use Scalar::Util qw(blessed);
+
+use Mouse::Util qw(not_supported);
+use Mouse::Meta::Role;
use Mouse ();
-use Mouse::Exporter;
Mouse::Exporter->setup_import_methods(
as_is => [qw(
],
);
+# XXX: for backward compatibility
+our @EXPORT = qw(
+ extends with
+ has
+ before after around
+ override super
+ augment inner
+
+ requires excludes
+
+ blessed confess
+);
sub before {
my $meta = Mouse::Meta::Role->initialize(scalar caller);
}
sub init_meta{
- my($class, %args) = @_;
+ shift;
+ my %args = @_;
- my $for_class = $args{for_class}
+ my $class = $args{for_class}
or Carp::confess("Cannot call init_meta without specifying a for_class");
my $metaclass = $args{metaclass} || 'Mouse::Meta::Role';
- my $meta = $metaclass->initialize($for_class);
+ my $meta = $metaclass->initialize($class);
$meta->add_method(meta => sub{
$metaclass->initialize(ref($_[0]) || $_[0]);
});
+ # make a role type for each Mouse role
+ Mouse::Util::TypeConstraints::role_type($class)
+ unless Mouse::Util::TypeConstraints::find_type_constraint($class);
+
return $meta;
}
Mouse::Role - The Mouse Role
+=head1 VERSION
+
+This document describes Mouse version 0.40_01
+
=head1 SYNOPSIS
package MyRole;