use strict;\r
use warnings;\r
\r
-use File::Slurp;\r
-\r
=head1 NAME\r
\r
Catalyst::Plugin::ConfigLoader::YAML - Load YAML config files\r
\r
---\r
name: TestApp\r
- Controller::Config:\r
+ Controller::Foo:\r
foo: bar\r
+ Model::Baz:\r
+ qux: xyzzy\r
+ \r
\r
=head1 METHODS\r
\r
+=head2 extensions( )\r
+\r
+return an array of valid extensions (C<yml>, C<yaml>).\r
+\r
+=cut\r
+\r
+sub extensions {\r
+ return qw( yml yaml );\r
+}\r
+\r
=head2 load( $file )\r
\r
Attempts to load C<$file> as a YAML file.\r
=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 =~ /^ya?ml$/;\r
- @files = $confpath;\r
+ eval { require YAML::Syck; };\r
+ if( $@ ) {\r
+ require YAML;\r
+ return YAML::LoadFile( $file );\r
}\r
else {\r
- @files = map { "$confpath.$_" } qw( yml yaml );\r
- }\r
- \r
- for my $file ( @files ) {\r
- next unless -f $file;\r
-\r
- eval { require YAML::Syck; };\r
- if( $@ ) {\r
- require YAML;\r
- return YAML::LoadFile( $file );\r
- }\r
- else {\r
- my $content = read_file( $file );\r
- return YAML::Syck::Load( $content );\r
- }\r
+ open( my $fh, $file ) or die $!;\r
+ my $content = do { local $/; <$fh> };\r
+ close $fh;\r
+ return YAML::Syck::Load( $content );\r
}\r
}\r
\r
\r
=item * L<Catalyst>\r
\r
+=item * L<Catalyst::Plugin::ConfigLoader>\r
+\r
+=item * L<YAML>\r
+\r
+=item * L<YAML::Syck>\r
+\r
=back\r
\r
=cut\r