summaryrefslogtreecommitdiff
path: root/Master/tlpkg/tlperl.straw/lib/YAML/Any.pm
diff options
context:
space:
mode:
Diffstat (limited to 'Master/tlpkg/tlperl.straw/lib/YAML/Any.pm')
-rwxr-xr-xMaster/tlpkg/tlperl.straw/lib/YAML/Any.pm202
1 files changed, 202 insertions, 0 deletions
diff --git a/Master/tlpkg/tlperl.straw/lib/YAML/Any.pm b/Master/tlpkg/tlperl.straw/lib/YAML/Any.pm
new file mode 100755
index 00000000000..ad8f496fa68
--- /dev/null
+++ b/Master/tlpkg/tlperl.straw/lib/YAML/Any.pm
@@ -0,0 +1,202 @@
+package YAML::Any;
+
+use 5.005003;
+use strict;
+use Exporter ();
+
+$YAML::Any::VERSION = '0.71';
+@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';
+ 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';
+ 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';
+ 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';
+ 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 defined @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;
+
+=head1 NAME
+
+YAML::Any - Pick a YAML implementation and use it.
+
+=head1 SYNOPSIS
+
+ use YAML::Any;
+ $YAML::Indent = 3;
+ my $yaml = Dump(@objects);
+
+=head1 DESCRIPTION
+
+There are several YAML implementations that support the Dump/Load API.
+This module selects the best one available and uses it.
+
+=head1 ORDER
+
+Currently, YAML::Any will choose the first one of these YAML
+implementations that is installed on your system:
+
+ YAML::XS
+ YAML::Syck
+ YAML::Old
+ YAML
+ YAML::Tiny
+
+=head1 OPTIONS
+
+If you specify an option like:
+
+ $YAML::Indent = 4;
+
+And YAML::Any is using YAML::XS, it will use the proper variable:
+$YAML::XS::Indent.
+
+=head1 SUBROUTINES
+
+Like all the YAML modules that YAML::Any uses, the following subroutines
+are exported by default:
+
+ Dump
+ Load
+
+and the following subroutines are exportable by request:
+
+ DumpFile
+ LoadFile
+
+=head1 METHODS
+
+YAML::Any provides the following class methods.
+
+=over
+
+=item YAML::Any->order;
+
+This method returns a list of the current possible implementations that
+YAML::Any will search for.
+
+=item YAML::Any->implementation;
+
+This method returns the implementation the YAML::Any will use. This
+result is obtained by finding the first member of YAML::Any->order that
+is either already loaded in C<%INC> or that can be loaded using
+C<require>. If no implementation is found, an error will be thrown.
+
+=back
+
+=head1 AUTHOR
+
+Ingy döt Net <ingy@cpan.org>
+
+=head1 COPYRIGHT
+
+Copyright (c) 2008. Ingy döt Net.
+
+This program is free software; you can redistribute it and/or modify it
+under the same terms as Perl itself.
+
+See L<http://www.perl.com/perl/misc/Artistic.html>
+
+=cut