Remove pointless shebang in each module
[gitmo/Mouse.git] / lib / Squirrel / Role.pm
1 package Squirrel::Role;
2 use strict;
3 use warnings;
4
5 sub _choose_backend {
6     if ( $INC{"Moose/Role.pm"} ) {
7         return {
8             import   => \&Moose::Role::import,
9             unimport => defined &Moose::Role::unimport ? \&Moose::Role::unimport : sub {},
10         }
11     } else {
12         require Mouse::Role;
13         return {
14             import   => \&Mouse::Role::import,
15             unimport => \&Mouse::Role::unimport,
16         }
17     }
18 }
19
20 my %pkgs;
21
22 sub _handlers {
23     my $class = shift;
24
25     my $caller = caller(1);
26
27     $pkgs{$caller} = $class->_choose_backend
28         unless $pkgs{$caller};
29 }
30
31 sub import {
32     goto $_[0]->_handlers->{import};
33 }
34
35 sub unimport {
36     goto $_[0]->_handlers->{unimport};
37 }
38
39 1;
40