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