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