Commit | Line | Data |
52d358e2 |
1 | package MooseX::Types::Wrapper; |
3df5416a |
2 | #use warnings; |
3 | #use strict; |
52d358e2 |
4 | #use base 'MooseX::Types'; |
c20dc98b |
5 | |
6 | use Carp qw( croak ); |
7 | use Class::Inspector; |
3df5416a |
8 | use Moose; |
c20dc98b |
9 | use namespace::clean; |
10 | |
52d358e2 |
11 | extends 'MooseX::Types'; |
3df5416a |
12 | |
c20dc98b |
13 | sub import { |
14 | my ($class, @args) = @_; |
15 | my %libraries = @args == 1 ? (Moose => $args[0]) : @args; |
16 | |
17 | for my $l (keys %libraries) { |
18 | |
19 | croak qq($class expects an array reference as import spec) |
20 | unless ref $libraries{ $l } eq 'ARRAY'; |
21 | |
22 | my $library_class |
52d358e2 |
23 | = ($l eq 'Moose' ? 'MooseX::Types::Moose' : $l ); |
c20dc98b |
24 | require Class::Inspector->filename($library_class) |
25 | unless Class::Inspector->loaded($library_class); |
26 | |
57dad71e |
27 | $library_class->import( @{ $libraries{ $l } }, { |
28 | -into => scalar(caller), |
29 | -wrapper => $class, |
30 | }); |
c20dc98b |
31 | } |
32 | return 1; |
33 | } |
34 | |
35 | 1; |