Moved to MooseX-Types
[gitmo/MooseX-Types.git] / lib / MooseX / Types / Wrapper.pm
1 package MooseX::Types::Wrapper;
2 #use warnings;
3 #use strict;
4 #use base 'MooseX::Types';
5
6 use Carp    qw( croak );
7 use Class::Inspector;
8 use Moose;
9 use namespace::clean;
10
11 extends 'MooseX::Types';
12
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 
23           = ($l eq 'Moose' ? 'MooseX::Types::Moose' : $l );
24         require Class::Inspector->filename($library_class)
25             unless Class::Inspector->loaded($library_class);
26
27         $library_class->import( @{ $libraries{ $l } }, { 
28             -into    => scalar(caller),
29             -wrapper => $class,
30         });
31     }
32     return 1;
33 }
34
35 1;