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