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