X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=p5sagit%2FConfig-Any.git;a=blobdiff_plain;f=lib%2FConfig%2FAny%2FYAML.pm;h=dd369fde2492d145f5b5fbd93f0f8443a6e76d89;hp=564fc52f7059732dbc468d68d13990e189e4ee4f;hb=10a054f4bf2592b7c2312bda2ba563aac8ddc7ae;hpb=c80a0905834ed09d487b84d7a00a3e92e44bbb62 diff --git a/lib/Config/Any/YAML.pm b/lib/Config/Any/YAML.pm index 564fc52..dd369fd 100644 --- a/lib/Config/Any/YAML.pm +++ b/lib/Config/Any/YAML.pm @@ -1,88 +1,107 @@ -package Config::Any::YAML; - -use strict; -use warnings; - -=head1 NAME - -Config::Any::YAML - Load YAML config files - -=head1 DESCRIPTION - -Loads YAML files. Example: - - --- - name: TestApp - Controller::Foo: - foo: bar - Model::Baz: - qux: xyzzy - - -=head1 METHODS - -=head2 extensions( ) - -return an array of valid extensions (C, C). - -=cut - -sub extensions { - return qw( yml yaml ); -} - -=head2 load( $file ) - -Attempts to load C<$file> as a YAML file. - -=cut - -sub load { - my $class = shift; - my $file = shift; - - eval { require YAML::Syck; }; - if( $@ ) { - require YAML; - return YAML::LoadFile( $file ); - } - else { - open( my $fh, $file ) or die $!; - my $content = do { local $/; <$fh> }; - close $fh; - return YAML::Syck::Load( $content ); - } -} - -=head1 AUTHOR - -=over 4 - -=item * Brian Cassidy Ebricas@cpan.orgE - -=back - -=head1 COPYRIGHT AND LICENSE - -Copyright 2006 by Brian Cassidy - -This library is free software; you can redistribute it and/or modify -it under the same terms as Perl itself. - -=head1 SEE ALSO - -=over 4 - -=item * L - -=item * L - -=item * L - -=item * L - -=back - -=cut - -1; \ No newline at end of file +package Config::Any::YAML; + +use strict; +use warnings; + +use base 'Config::Any::Base'; + +use Carp (); + +=head1 NAME + +Config::Any::YAML - Load YAML config files + +=head1 DESCRIPTION + +Loads YAML files. Example: + + --- + name: TestApp + Controller::Foo: + foo: bar + Model::Baz: + qux: xyzzy + + +=head1 METHODS + +=head2 extensions( ) + +return an array of valid extensions (C, C). + +=cut + +sub extensions { + return qw( yml yaml ); +} + +=head2 load( $file ) + +Attempts to load C<$file> as a YAML file. + +=cut + +sub load { + my $class = shift; + my $file = shift; + + eval { require YAML::XS }; + unless ( $@ ) { + return YAML::XS::LoadFile( $file ); + } + + Carp::carp + 'Use of YAML::Syck or YAML to parse config files is DEPRECATED. ' + . 'Please install YAML::XS for proper YAML support'; + + eval { require YAML::Syck; YAML::Syck->VERSION( '0.70' ) }; + unless ( $@ ) { + open( my $fh, $file ) or die $!; + my $content = do { local $/; <$fh> }; + close $fh; + return YAML::Syck::Load( $content ); + } + + require YAML; + return YAML::LoadFile( $file ); +} + +=head2 requires_any_of( ) + +Specifies that this modules requires one of L, L (0.70) or +L in order to work. + +=cut + +sub requires_any_of { 'YAML::XS', [ 'YAML::Syck', '0.70' ], 'YAML' } + +=head1 AUTHOR + +Brian Cassidy Ebricas@cpan.orgE + +=head1 COPYRIGHT AND LICENSE + +Copyright 2006-2009 by Brian Cassidy + +This library is free software; you can redistribute it and/or modify +it under the same terms as Perl itself. + +=head1 SEE ALSO + +=over 4 + +=item * L + +=item * L + +=item * L + +=item * L + +=item * L + +=back + +=cut + +1;