switched to Sub::Exporter
[gitmo/MooseX-Types.git] / lib / MooseX / Types / Wrapper.pm
CommitLineData
9448c224 1=head1 NAME
2
3MooseX::Types::Wrapper - Wrap exports from a library
4
5=cut
6
52d358e2 7package MooseX::Types::Wrapper;
9448c224 8use Moose;
c20dc98b 9
16ddefbf 10use Carp::Clan qw( ^MooseX::Types );
9448c224 11use Class::MOP;
12
13use namespace::clean -except => [qw( meta )];
c20dc98b 14
52d358e2 15extends 'MooseX::Types';
3df5416a 16
9448c224 17=head1 DESCRIPTION
18
19See L<MooseX::Types/SYNOPSIS> for detailed usage.
20
21=head1 METHODS
22
23=head2 import
24
25=cut
26
c20dc98b 27sub import {
28 my ($class, @args) = @_;
29 my %libraries = @args == 1 ? (Moose => $args[0]) : @args;
30
31 for my $l (keys %libraries) {
32
33 croak qq($class expects an array reference as import spec)
34 unless ref $libraries{ $l } eq 'ARRAY';
35
36 my $library_class
52d358e2 37 = ($l eq 'Moose' ? 'MooseX::Types::Moose' : $l );
9448c224 38 Class::MOP::load_class($library_class);
c20dc98b 39
16ddefbf 40 $library_class->import({
57dad71e 41 -into => scalar(caller),
42 -wrapper => $class,
16ddefbf 43 }, @{ $libraries{ $l } });
c20dc98b 44 }
45 return 1;
46}
47
481;
9448c224 49
50=head1 SEE ALSO
51
52L<MooseX::Types>
53
54=head1 AUTHOR AND COPYRIGHT
55
56Robert 'phaylon' Sedlacek C<E<lt>rs@474.atE<gt>>, with many thanks to
57the C<#moose> cabal on C<irc.perl.org>.
58
59=head1 LICENSE
60
61This program is free software; you can redistribute it and/or modify
62it under the same terms as perl itself.
63
64=cut