Fixes, refactoring, test additions
[dbsrgits/DBIx-Class.git] / lib / DBIx / Class / Componentised.pm
1 package DBIx::Class::Componentised;
2
3 sub inject_base {
4   my ($class, $target, @to_inject) = @_;
5   {
6     no strict 'refs';
7     unshift(@{"${target}::ISA"}, grep { $target ne $_ } @to_inject);
8   }
9 }
10
11 sub load_components {
12   my $class = shift;
13   my @comp = map { "DBIx::Class::$_" } grep { $_ !~ /^#/ } @_;
14   $class->_load_components(@comp);
15 }
16
17 sub load_own_components {
18   my $class = shift;
19   my @comp = map { "${class}::$_" } grep { $_ !~ /^#/ } @_;
20   $class->_load_components(@comp);
21 }
22
23 sub _load_components {
24   my ($class, @comp) = @_;
25   foreach my $comp (@comp) {
26     eval "use $comp";
27     die $@ if $@;
28   }
29   $class->inject_base($class => @comp);
30 }
31
32 1;