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