initial import
[catagits/Catalyst-Plugin-ConfigLoader.git] / lib / Catalyst / Plugin / ConfigLoader / YAML.pm
1 package Catalyst::Plugin::ConfigLoader::YAML;\r
2 \r
3 use strict;\r
4 use warnings;\r
5 \r
6 use File::Slurp;\r
7 \r
8 =head1 NAME\r
9 \r
10 Catalyst::Plugin::ConfigLoader::YAML - Load YAML config files\r
11 \r
12 =head1 DESCRIPTION\r
13 \r
14 Loads YAML files. Example:\r
15 \r
16     ---\r
17     name: TestApp\r
18     Controller::Config:\r
19         foo: bar\r
20 \r
21 =head1 METHODS\r
22 \r
23 =head2 load( $file )\r
24 \r
25 Attempts to load C<$file> as a YAML file.\r
26 \r
27 =cut\r
28 \r
29 sub load {\r
30         my $class    = shift;\r
31         my $confpath = shift;\r
32 \r
33         my @files;\r
34     if( $confpath =~ /\.(.{3,4})$/ ) {\r
35         return unless $1 =~ /^ya?ml$/;\r
36         @files = $confpath;\r
37     }\r
38     else {\r
39         @files = map { "$confpath.$_" } qw( yml yaml );\r
40     }\r
41     \r
42     for my $file ( @files ) {\r
43         next unless -f $file;\r
44 \r
45         eval { require YAML::Syck; };\r
46         if( $@ ) {\r
47             require YAML;\r
48             return YAML::LoadFile( $file );\r
49         }\r
50         else {\r
51             my $content = read_file( $file );\r
52             return YAML::Syck::Load( $content );\r
53         }\r
54     }\r
55 }\r
56 \r
57 =head1 AUTHOR\r
58 \r
59 =over 4 \r
60 \r
61 =item * Brian Cassidy E<lt>bricas@cpan.orgE<gt>\r
62 \r
63 =back\r
64 \r
65 =head1 COPYRIGHT AND LICENSE\r
66 \r
67 Copyright 2006 by Brian Cassidy\r
68 \r
69 This library is free software; you can redistribute it and/or modify\r
70 it under the same terms as Perl itself. \r
71 \r
72 =head1 SEE ALSO\r
73 \r
74 =over 4 \r
75 \r
76 =item * L<Catalyst>\r
77 \r
78 =back\r
79 \r
80 =cut\r
81 \r
82 1;