refactored
[catagits/Catalyst-Plugin-ConfigLoader.git] / lib / Catalyst / Plugin / ConfigLoader / JSON.pm
index 02cdced..041e55f 100644 (file)
@@ -15,13 +15,23 @@ Loads JSON files. Example:
 \r
     {\r
         "name": "TestApp",\r
-        "Controller::Config": {\r
+        "Controller::Foo": {\r
             "foo": "bar"\r
         }\r
     }\r
 \r
 =head1 METHODS\r
 \r
+=head2 extensions( )\r
+\r
+return an array of valid extensions (C<json>, C<jsn>).\r
+\r
+=cut\r
+\r
+sub extensions {\r
+    return qw( json jsn );\r
+}\r
+\r
 =head2 load( $file )\r
 \r
 Attempts to load C<$file> as a JSON file.\r
@@ -29,32 +39,19 @@ Attempts to load C<$file> as a JSON file.
 =cut\r
 \r
 sub load {\r
-       my $class    = shift;\r
-       my $confpath = shift;\r
+    my $class = shift;\r
+    my $file  = shift;\r
 \r
-       my @files;\r
-    if( $confpath =~ /\.(.{3,4})$/ ) {\r
-        return unless $1 =~ /^jso?n$/;\r
-        @files = $confpath;\r
+    my $content = read_file( $file );\r
+\r
+    eval { require JSON::Syck; };\r
+    if( $@ ) {\r
+        require JSON;\r
+        JSON->import;\r
+        return jsonToObj( $content );\r
     }\r
     else {\r
-        @files = map { "$confpath.$_" } qw( json jsn );\r
-    }\r
-    \r
-    for my $file ( @files ) {\r
-        next unless -f $file;\r
-        \r
-        my $content = read_file( $file );\r
-\r
-        eval { require JSON::Syck; };\r
-        if( $@ ) {\r
-            require JSON;\r
-            JSON->import;\r
-            return jsonToObj( $content );\r
-        }\r
-        else {\r
-            return JSON::Syck::Load( $content );\r
-        }\r
+        return JSON::Syck::Load( $content );\r
     }\r
 }\r
 \r
@@ -79,6 +76,8 @@ it under the same terms as Perl itself.
 \r
 =item * L<Catalyst>\r
 \r
+=item * <Catalyst::Plugin::ConfigLoader>\r
+\r
 =back\r
 \r
 =cut\r