Config::Any::YAML - Load YAML config files


Config-Any documentation Contained in the Config-Any distribution.

Index


Code Index:

NAME

Top

Config::Any::YAML - Load YAML config files

DESCRIPTION

Top

Loads YAML files. Example:

    ---
    name: TestApp
    Controller::Foo:
        foo: bar
    Model::Baz:
        qux: xyzzy




METHODS

Top

extensions( )

return an array of valid extensions (yml, yaml).

load( $file )

Attempts to load $file as a YAML file.

requires_any_of( )

Specifies that this modules requires one of YAML::XS, YAML::Syck (0.70) or YAML in order to work.

AUTHOR

Top

Brian Cassidy <bricas@cpan.org>

COPYRIGHT AND LICENSE

Top

SEE ALSO

Top

* Catalyst
* Config::Any
* YAML::XS
* YAML
* YAML::Syck

Config-Any documentation Contained in the Config-Any distribution.
package Config::Any::YAML;

use strict;
use warnings;

use base 'Config::Any::Base';

use Carp ();

sub extensions {
    return qw( yml yaml );
}

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 );
}

sub requires_any_of { 'YAML::XS', [ 'YAML::Syck', '0.70' ], 'YAML' }

1;