Fix for 5.10/Carp 1.08 upwards. Ugh
[p5sagit/Class-C3-Componentised.git] / lib / Class / C3 / Componentised.pm
index 8311ca3..ed0ac41 100644 (file)
@@ -17,11 +17,21 @@ Load mix-ins or components to your C3-based class.
 
   use base 'Class::C3::Componentised';
 
-  sub component_base_class { "MyModule::Plugin" }
+  sub component_base_class { "MyModule::Component" }
 
   package main;
 
-  MyModule->load_components( $self->{plugins} );
+  MyModule->load_components( qw/Foo Bar/ ); 
+  # Will load MyModule::Component::Foo an MyModule::Component::Bar
+
+=head1 DESCRIPTION
+
+This will inject base classes to your module using the L<Class::C3> method
+resolution order.
+
+Please note: these are not plugins that can take precedence over methods 
+declared in MyModule. If you want something like that, consider
+L<MooseX::Object::Pluggable>.
 
 =head1 METHODS
 
@@ -34,7 +44,7 @@ use Class::C3;
 use Class::Inspector;
 use Carp;
 
-our $VERSION = 1.0000;
+our $VERSION = 1.0003;
 
 =head2 load_components( @comps )
 
@@ -111,7 +121,9 @@ sub ensure_class_loaded {
   croak "Invalid class name $f_class"
       if ($f_class=~m/(?:\b:\b|\:{3,})/);
   return if Class::Inspector->loaded($f_class);
-  eval "require $f_class"; # require needs a bareword or filename
+  my $file = $f_class . '.pm';
+  $file =~ s{::}{/}g;
+  eval { CORE::require($file) }; # require needs a bareword or filename
   if ($@) {
     if ($class->can('throw_exception')) {
       $class->throw_exception($@);
@@ -134,18 +146,6 @@ sub ensure_class_found {
          Class::Inspector->installed($f_class);
 }
 
-# Returns a true value if the specified class is installed and loaded
-# successfully, throws an exception if the class is found but not loaded
-# successfully, and false if the class is not installed
-sub _load_optional_class {
-  my ($class, $f_class) = @_;
-  if ($class->ensure_class_found($f_class)) {
-    $class->ensure_class_loaded($f_class);
-    return 1;
-  } else {
-    return 0;
-  }
-}
 
 =head2 inject_base
 
@@ -158,7 +158,7 @@ sub inject_base {
   {
     no strict 'refs';
     foreach my $to (reverse @to_inject) {
-      unshift( @{"${target}::ISA"}, $to )
+      unshift ( @{"${target}::ISA"}, $to )
         unless ($target eq $to || $target->isa($to));
     }
   }