MooseX::Types::Wrapper - Wrap exports from a library


MooseX-Types documentation Contained in the MooseX-Types distribution.

Index


Code Index:

NAME

Top

MooseX::Types::Wrapper - Wrap exports from a library

VERSION

Top

version 0.27

DESCRIPTION

Top

See SYNOPSIS in MooseX::Types for detailed usage.

METHODS

Top

import

SEE ALSO

Top

MooseX::Types

LICENSE

Top

This program is free software; you can redistribute it and/or modify it under the same terms as perl itself.

AUTHOR

Top

Robert "phaylon" Sedlacek <rs@474.at>

COPYRIGHT AND LICENSE

Top


MooseX-Types documentation Contained in the MooseX-Types distribution.

package MooseX::Types::Wrapper;
BEGIN {
  $MooseX::Types::Wrapper::VERSION = '0.27';
}

#ABSTRACT: Wrap exports from a library

use Moose;

use Carp::Clan      qw( ^MooseX::Types );
use Class::MOP;

use namespace::clean -except => [qw( meta )];

extends 'MooseX::Types';


sub import {
    my ($class, @args) = @_;
    my %libraries = @args == 1 ? (Moose => $args[0]) : @args;

    for my $l (keys %libraries) {

        croak qq($class expects an array reference as import spec)
            unless ref $libraries{ $l } eq 'ARRAY';

        my $library_class 
          = ($l eq 'Moose' ? 'MooseX::Types::Moose' : $l );
        Class::MOP::load_class($library_class);

        $library_class->import({ 
            -into    => scalar(caller),
            -wrapper => $class,
        }, @{ $libraries{ $l } });
    }
    return 1;
}

1;


__END__