Initial import of Config::Any (refactored from Catalyst::Plugin::ConfigLoader), and...
[p5sagit/Config-Any.git] / lib / Config / Any / YAML.pm
CommitLineData
c80a0905 1package Config::Any::YAML;\r
2\r
3use strict;\r
4use warnings;\r
5\r
6=head1 NAME\r
7\r
8Config::Any::YAML - Load YAML config files\r
9\r
10=head1 DESCRIPTION\r
11\r
12Loads 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
26return an array of valid extensions (C<yml>, C<yaml>).\r
27\r
28=cut\r
29\r
30sub extensions {\r
31 return qw( yml yaml );\r
32}\r
33\r
34=head2 load( $file )\r
35\r
36Attempts to load C<$file> as a YAML file.\r
37\r
38=cut\r
39\r
40sub 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
67Copyright 2006 by Brian Cassidy\r
68\r
69This library is free software; you can redistribute it and/or modify\r
70it 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
881;