add YAML::XS to the top of the YAML loaders. tidy up some copyright lines.
[p5sagit/Config-Any.git] / lib / Config / Any.pm
index ef3430b..d9c660c 100644 (file)
@@ -6,7 +6,7 @@ use warnings;
 use Carp;
 use Module::Pluggable::Object ();
 
-our $VERSION = '0.15';
+our $VERSION = '0.18';
 
 =head1 NAME
 
@@ -142,7 +142,9 @@ sub _load {
     }
 
     # figure out what plugins we're using
-    my @plugins = $force ? @{ $args->{ force_plugins } } : $class->plugins;
+    my @plugins = $force
+        ? map { eval "require $_;"; $_; } @{ $args->{ force_plugins } }
+        : $class->plugins;
 
     # map extensions if we have to
     my ( %extension_lut, $extension_re );
@@ -178,7 +180,7 @@ sub _load {
         if ( $use_ext_lut ) {
             $filename =~ m{\.($extension_re)\z};
 
-            if( !$1 ) {
+            if ( !$1 ) {
                 $filename =~ m{\.([^.]+)\z};
                 croak "There are no loaders available for .${1} files";
             }
@@ -231,7 +233,9 @@ sub _support_error {
             map { ref $_ ? join( ' ', @$_ ) : $_ } $module->requires_all_of );
     }
     if ( $module->can( 'requires_any_of' ) ) {
-        return 'one of ' . join( ' or ', $module->requires_any_of );
+        return 'one of '
+            . join( ' or ',
+            map { ref $_ ? join( ' ', @$_ ) : $_ } $module->requires_any_of );
     }
 }
 
@@ -263,6 +267,7 @@ found by L<Module::Pluggable::Object|Module::Pluggable::Object>.
 
 sub plugins {
     my $class = shift;
+
     # filter out things that don't look like our plugins
     return grep { $_->isa( 'Config::Any::Base' ) } $class->finder->plugins;
 }
@@ -277,7 +282,8 @@ parameter to those methods.
 
 sub extensions {
     my $class = shift;
-    my @ext = map { $_->extensions } $class->plugins;
+    my @ext
+        = map { $_->extensions } $class->plugins;
     return wantarray ? @ext : \@ext;
 }