lots of Config::Any fixes, brought in C::Any testsuite (refactored, partly, from...
[p5sagit/Config-Any.git] / lib / Config / Any / YAML.pm
1 package Config::Any::YAML;\r
2 \r
3 use strict;\r
4 use warnings;\r
5 \r
6 =head1 NAME\r
7 \r
8 Config::Any::YAML - Load YAML config files\r
9 \r
10 =head1 DESCRIPTION\r
11 \r
12 Loads YAML files. Example:\r
13 \r
14     ---\r
15     name: TestApp\r
16     Controller::Foo:\r
17         foo: bar\r
18     Model::Baz:\r
19         qux: xyzzy\r
20     \r
21 \r
22 =head1 METHODS\r
23 \r
24 =head2 extensions( )\r
25 \r
26 return an array of valid extensions (C<yml>, C<yaml>).\r
27 \r
28 =cut\r
29 \r
30 sub extensions {\r
31     return qw( yml yaml );\r
32 }\r
33 \r
34 =head2 load( $file )\r
35 \r
36 Attempts to load C<$file> as a YAML file.\r
37 \r
38 =cut\r
39 \r
40 sub load {\r
41     my $class = shift;\r
42     my $file  = shift;\r
43 \r
44     eval { require YAML::Syck; };\r
45     if( $@ ) {\r
46         require YAML;\r
47         return YAML::LoadFile( $file );\r
48     }\r
49     else {\r
50         open( my $fh, $file ) or die $!;\r
51         my $content = do { local $/; <$fh> };\r
52         close $fh;\r
53         return YAML::Syck::Load( $content );\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 =item * L<Config::Any>\r
79 \r
80 =item * L<YAML>\r
81 \r
82 =item * L<YAML::Syck>\r
83 \r
84 =back\r
85 \r
86 =cut\r
87 \r
88 1;