package DBIx::Skinny::Mixin;
use strict;
use warnings;
use Carp ();
sub import {
my($class, %args) = @_;
Carp::croak "Usage: use DBIx::Skinny::Mixin modules => ['MixinModuleName', 'MixinModuleName2', .... ]"
unless $args{modules} && ref($args{modules}) eq 'ARRAY';
my $caller = caller;
for my $module (@{ $args{modules} }) {
my $pkg = $module;
$pkg = __PACKAGE__ . "::$pkg" unless $pkg =~ s/^\+//;
eval "use $pkg"; ## no critic
if ($@) {
Carp::croak $@;
}
my $register_methods = $pkg->register_method;
while (my($method, $code) = each %{ $register_methods }) {
no strict 'refs';
*{"$caller\::$method"} = $code;
}
}
}
1;
=head1 NAME
DBIx::Skinny::Mixin - mixin manager for DBIx::Skinny
=head1 SYNOPSIS
use DBIx::Skinny::Mixin modules => ['mixin_module_names'];
=cut