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