Commit | Line | Data |
---|---|---|
ef8b7b7a | 1 | package MooseX::Types::Wrapper; |
9448c224 | 2 | |
ef8b7b7a | 3 | #ABSTRACT: Wrap exports from a library |
9448c224 | 4 | |
9448c224 | 5 | use Moose; |
c20dc98b | 6 | |
16ddefbf | 7 | use Carp::Clan qw( ^MooseX::Types ); |
05cd5599 | 8 | use Module::Runtime 'use_module'; |
9448c224 | 9 | |
4eb26e95 | 10 | use namespace::autoclean; |
c20dc98b | 11 | |
52d358e2 | 12 | extends 'MooseX::Types'; |
3df5416a | 13 | |
9448c224 | 14 | =head1 DESCRIPTION |
15 | ||
16 | See L<MooseX::Types/SYNOPSIS> for detailed usage. | |
17 | ||
18 | =head1 METHODS | |
19 | ||
20 | =head2 import | |
21 | ||
22 | =cut | |
23 | ||
c20dc98b | 24 | sub import { |
25 | my ($class, @args) = @_; | |
26 | my %libraries = @args == 1 ? (Moose => $args[0]) : @args; | |
27 | ||
28 | for my $l (keys %libraries) { | |
29 | ||
30 | croak qq($class expects an array reference as import spec) | |
31 | unless ref $libraries{ $l } eq 'ARRAY'; | |
32 | ||
e9dc30af | 33 | my $library_class |
52d358e2 | 34 | = ($l eq 'Moose' ? 'MooseX::Types::Moose' : $l ); |
05cd5599 | 35 | use_module($library_class); |
c20dc98b | 36 | |
e9dc30af | 37 | $library_class->import({ |
57dad71e | 38 | -into => scalar(caller), |
39 | -wrapper => $class, | |
16ddefbf | 40 | }, @{ $libraries{ $l } }); |
c20dc98b | 41 | } |
42 | return 1; | |
43 | } | |
44 | ||
45 | 1; | |
9448c224 | 46 | |
47 | =head1 SEE ALSO | |
48 | ||
49 | L<MooseX::Types> | |
50 | ||
9448c224 | 51 | =head1 LICENSE |
52 | ||
53 | This program is free software; you can redistribute it and/or modify | |
54 | it under the same terms as perl itself. | |
55 | ||
56 | =cut |