fix for ini subsections (RT #32726), use from_json for JSON v2.x, refactor test suite.
[p5sagit/Config-Any.git] / lib / Config / Any / YAML.pm
CommitLineData
f0e3c221 1package Config::Any::YAML;
2
3use strict;
4use warnings;
5
6=head1 NAME
7
8Config::Any::YAML - Load YAML config files
9
10=head1 DESCRIPTION
11
12Loads YAML files. Example:
13
14 ---
15 name: TestApp
16 Controller::Foo:
17 foo: bar
18 Model::Baz:
19 qux: xyzzy
20
21
22=head1 METHODS
23
24=head2 extensions( )
25
26return an array of valid extensions (C<yml>, C<yaml>).
27
28=cut
29
30sub extensions {
31 return qw( yml yaml );
32}
33
34=head2 load( $file )
35
36Attempts to load C<$file> as a YAML file.
37
38=cut
39
40sub load {
41 my $class = shift;
42 my $file = shift;
43
48e4a267 44 eval { require YAML::Syck; YAML::Syck->VERSION( '0.70' ) };
92a04e78 45 if ( $@ ) {
f0e3c221 46 require YAML;
47 return YAML::LoadFile( $file );
48 }
49 else {
50 open( my $fh, $file ) or die $!;
51 my $content = do { local $/; <$fh> };
52 close $fh;
53 return YAML::Syck::Load( $content );
54 }
55}
56
72628dc7 57=head2 is_supported( )
58
59Returns true if either L<YAML::Syck> or L<YAML> is available.
60
61=cut
62
63sub is_supported {
06fb16e2 64 eval { require YAML::Syck; YAML::Syck->VERSION( '0.70' ) };
72628dc7 65 return 1 unless $@;
66 eval { require YAML; };
67 return $@ ? 0 : 1;
68}
69
f0e3c221 70=head1 AUTHOR
71
a918b0b8 72Brian Cassidy E<lt>bricas@cpan.orgE<gt>
f0e3c221 73
74=head1 COPYRIGHT AND LICENSE
75
a918b0b8 76Copyright 2007 by Brian Cassidy
f0e3c221 77
78This library is free software; you can redistribute it and/or modify
79it under the same terms as Perl itself.
80
81=head1 SEE ALSO
82
83=over 4
84
85=item * L<Catalyst>
86
87=item * L<Config::Any>
88
89=item * L<YAML>
90
91=item * L<YAML::Syck>
92
93=back
94
95=cut
96
971;