Begin adding a Mouse::Meta::Role which is accessible through Role->meta
[gitmo/Mouse.git] / lib / Mouse / Role.pm
CommitLineData
f9e68395 1#!/usr/bin/env perl
2package Mouse::Role;
3use strict;
4use warnings;
5
6use Sub::Exporter;
8da998d9 7use Carp 'confess';
4377514b 8use Scalar::Util;
f9e68395 9
a2227e71 10use Mouse::Meta::Role;
11
f9e68395 12do {
13 my $CALLER;
14
15 my %exports = (
a2227e71 16 meta => sub {
17 my $meta = Mouse::Meta::Role->initialize($CALLER);
18 return sub { $meta };
19 },
8da998d9 20 extends => sub {
21 return sub {
964eaf79 22 confess "Role does not currently support 'extends'";
8da998d9 23 }
24 },
72381201 25 before => sub {
26 return sub { }
27 },
28 after => sub {
29 return sub { }
30 },
31 around => sub {
32 return sub { }
33 },
26482d3f 34 has => sub {
35 return sub { }
36 },
00c0e9c2 37 with => sub {
38 return sub { }
39 },
eb812bde 40 requires => sub {
41 return sub { }
42 },
43 excludes => sub {
44 return sub { }
45 },
4377514b 46 blessed => sub {
47 return \&Scalar::Util::blessed;
48 },
49 confess => sub {
50 return \&Carp::confess;
51 },
f9e68395 52 );
53
54 my $exporter = Sub::Exporter::build_exporter({
55 exports => \%exports,
56 groups => { default => [':all'] },
57 });
58
59 sub import {
60 $CALLER = caller;
61
62 strict->import;
63 warnings->import;
64
65 goto $exporter;
66 }
67
68 sub unimport {
69 }
70};
71
721;
73