switched to Module::Pluggable::Object
[catagits/Catalyst-Plugin-ConfigLoader.git] / lib / Catalyst / Plugin / ConfigLoader.pm
index edc69d4..8494e96 100644 (file)
@@ -4,13 +4,10 @@ use strict;
 use warnings;\r
 \r
 use NEXT;\r
-use Module::Pluggable::Fast\r
-    name    => '_config_loaders',\r
-    search  => [ __PACKAGE__ ],\r
-    require => 1;\r
+use Module::Pluggable::Object ();\r
 use Data::Visitor::Callback;\r
 \r
-our $VERSION = '0.08';\r
+our $VERSION = '0.1';\r
 \r
 =head1 NAME\r
 \r
@@ -51,8 +48,13 @@ loaded, set the C<config()> section.
 sub setup {\r
     my $c = shift;\r
     my( $path, $extension ) = $c->get_config_path;\r
-    \r
-    for my $loader ( $c->_config_loaders ) {\r
+\r
+    my $finder = Module::Pluggable::Object->new(\r
+        search_path => [ __PACKAGE__ ],\r
+        require     => 1\r
+    );\r
+\r
+    for my $loader ( $finder->plugins ) {\r
         my @files;\r
         my @extensions = $loader->extensions;\r
         if( $extension ) {\r
@@ -67,24 +69,12 @@ sub setup {
             next unless -f $_;\r
             my $config = $loader->load( $_ );\r
 \r
-            $c->log->debug( "Loaded Config $_" ) if $c->debug;\r
+            $c->log->debug( qq(Loaded Config "$_") ) if $c->debug;\r
             \r
             next if !$config;\r
 \r
             _fix_syntax( $config );\r
             \r
-            # merge hashes 1 level down\r
-            for my $key ( keys %$config ) {\r
-                if( exists $c->config->{ $key } ) {\r
-                    my $isa_ref = ref $config->{ $key };\r
-\r
-                    next if !$isa_ref or $isa_ref ne 'HASH';\r
-\r
-                    my %temp = ( %{ $c->config->{ $key } }, %{ $config->{ $key } } );\r
-                    $config->{ $key } = \%temp;\r
-                }\r
-            }\r
-            \r
             $c->config( $config );\r
         }\r
     }\r
@@ -114,8 +104,8 @@ sub finalize_config {
     my $v = Data::Visitor::Callback->new(\r
         plain_value => sub {\r
             return unless defined $_;\r
-            s[__HOME__][ $c->path_to( '' ) ]e;\r
-            s[__path_to\((.+)\)__][ $c->path_to( split( '/', $1 ) ) ]e;\r
+            s{__HOME__}{ $c->path_to( '' ) }e;\r
+            s{__path_to\((.+)\)__}{ $c->path_to( split( '/', $1 ) ) }e;\r
         }\r
     );\r
     $v->visit( $c->config );\r
@@ -152,10 +142,10 @@ sub get_config_path {
         || $c->config->{ file }\r
         || $c->path_to( $prefix );\r
 \r
-    my( $extension ) = ( $path =~ /\.(.{1,4})$/ );\r
+    my( $extension ) = ( $path =~ m{\.(.{1,4})$} );\r
     \r
     if( -d $path ) {\r
-        $path  =~ s/[\/\\]$//;\r
+        $path  =~ s{[\/\\]$}{};\r
         $path .= "/$prefix";\r
     }\r
     \r
@@ -168,7 +158,11 @@ sub _fix_syntax {
         map +{\r
             prefix => $_ eq 'Component' ? '' : $_ . '::',\r
             values => delete $config->{ lc $_ } || delete $config->{ $_ }\r
-        }, qw( Component Model View Controller )\r
+        },\r
+        grep {\r
+            ref $config->{ lc $_ } || ref $config->{ $_ }\r
+        }\r
+        qw( Component Model M View V Controller C )\r
     );\r
 \r
     foreach my $comp ( @components ) {\r