+++ /dev/null
-use strict; use warnings;
-package YAML::Any;
-our $VERSION = '1.14';
-
-use Exporter ();
-
-@YAML::Any::ISA = 'Exporter';
-@YAML::Any::EXPORT = qw(Dump Load);
-@YAML::Any::EXPORT_OK = qw(DumpFile LoadFile);
-
-my @dump_options = qw(
- UseCode
- DumpCode
- SpecVersion
- Indent
- UseHeader
- UseVersion
- SortKeys
- AnchorPrefix
- UseBlock
- UseFold
- CompressSeries
- InlineSeries
- UseAliases
- Purity
- Stringify
-);
-
-my @load_options = qw(
- UseCode
- LoadCode
-);
-
-my @implementations = qw(
- YAML::XS
- YAML::Syck
- YAML::Old
- YAML
- YAML::Tiny
-);
-
-sub import {
- __PACKAGE__->implementation;
- goto &Exporter::import;
-}
-
-sub Dump {
- no strict 'refs';
- no warnings 'once';
- my $implementation = __PACKAGE__->implementation;
- for my $option (@dump_options) {
- my $var = "$implementation\::$option";
- my $value = $$var;
- local $$var;
- $$var = defined $value ? $value : ${"YAML::$option"};
- }
- return &{"$implementation\::Dump"}(@_);
-}
-
-sub DumpFile {
- no strict 'refs';
- no warnings 'once';
- my $implementation = __PACKAGE__->implementation;
- for my $option (@dump_options) {
- my $var = "$implementation\::$option";
- my $value = $$var;
- local $$var;
- $$var = defined $value ? $value : ${"YAML::$option"};
- }
- return &{"$implementation\::DumpFile"}(@_);
-}
-
-sub Load {
- no strict 'refs';
- no warnings 'once';
- my $implementation = __PACKAGE__->implementation;
- for my $option (@load_options) {
- my $var = "$implementation\::$option";
- my $value = $$var;
- local $$var;
- $$var = defined $value ? $value : ${"YAML::$option"};
- }
- return &{"$implementation\::Load"}(@_);
-}
-
-sub LoadFile {
- no strict 'refs';
- no warnings 'once';
- my $implementation = __PACKAGE__->implementation;
- for my $option (@load_options) {
- my $var = "$implementation\::$option";
- my $value = $$var;
- local $$var;
- $$var = defined $value ? $value : ${"YAML::$option"};
- }
- return &{"$implementation\::LoadFile"}(@_);
-}
-
-sub order {
- return @YAML::Any::_TEST_ORDER
- if @YAML::Any::_TEST_ORDER;
- return @implementations;
-}
-
-sub implementation {
- my @order = __PACKAGE__->order;
- for my $module (@order) {
- my $path = $module;
- $path =~ s/::/\//g;
- $path .= '.pm';
- return $module if exists $INC{$path};
- eval "require $module; 1" and return $module;
- }
- croak("YAML::Any couldn't find any of these YAML implementations: @order");
-}
-
-sub croak {
- require Carp;
- Carp::croak(@_);
-}
-
-1;