switching over to dzil
[gitmo/MooseX-Types.git] / lib / MooseX / Types / Wrapper.pm
CommitLineData
ef8b7b7a 1package MooseX::Types::Wrapper;
9448c224 2
ef8b7b7a 3#ABSTRACT: Wrap exports from a library
9448c224 4
9448c224 5use Moose;
c20dc98b 6
16ddefbf 7use Carp::Clan qw( ^MooseX::Types );
9448c224 8use Class::MOP;
9
10use namespace::clean -except => [qw( meta )];
c20dc98b 11
52d358e2 12extends 'MooseX::Types';
3df5416a 13
9448c224 14=head1 DESCRIPTION
15
16See L<MooseX::Types/SYNOPSIS> for detailed usage.
17
18=head1 METHODS
19
20=head2 import
21
22=cut
23
c20dc98b 24sub 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
33 my $library_class
52d358e2 34 = ($l eq 'Moose' ? 'MooseX::Types::Moose' : $l );
9448c224 35 Class::MOP::load_class($library_class);
c20dc98b 36
16ddefbf 37 $library_class->import({
57dad71e 38 -into => scalar(caller),
39 -wrapper => $class,
16ddefbf 40 }, @{ $libraries{ $l } });
c20dc98b 41 }
42 return 1;
43}
44
451;
9448c224 46
47=head1 SEE ALSO
48
49L<MooseX::Types>
50
9448c224 51=head1 LICENSE
52
53This program is free software; you can redistribute it and/or modify
54it under the same terms as perl itself.
55
56=cut