App-GhaInstall

 view release on metacpan or  search on metacpan

lib/App/GhaInstall/YAML.pm  view on Meta::CPAN

package YAML::Tiny;
BEGIN {
  $YAML::Tiny::AUTHORITY = 'cpan:ADAMK';
}
{
  $YAML::Tiny::VERSION = '1.56';
}
# git description: v1.55-3-gc945058


use strict;
use warnings;

# UTF Support?
sub HAVE_UTF8 () { $] >= 5.007003 }
BEGIN {
    if ( HAVE_UTF8 ) {
        # The string eval helps hide this from Test::MinimumVersion
        eval "require utf8;";
        die "Failed to load UTF-8 support" if $@;
    }

    # Class structure
    require 5.004;
    require Exporter;
    require Carp;
    @YAML::Tiny::ISA       = qw{ Exporter  };
    @YAML::Tiny::EXPORT    = qw{ Load Dump };
    @YAML::Tiny::EXPORT_OK = qw{ LoadFile DumpFile freeze thaw };

    # Error storage
    $YAML::Tiny::errstr    = '';
}

# The character class of all characters we need to escape
# NOTE: Inlined, since it's only used once
# my $RE_ESCAPE = '[\\x00-\\x08\\x0b-\\x0d\\x0e-\\x1f\"\n]';

# Printed form of the unprintable characters in the lowest range
# of ASCII characters, listed by ASCII ordinal position.
my @UNPRINTABLE = qw(
    z    x01  x02  x03  x04  x05  x06  a
    x08  t    n    v    f    r    x0e  x0f
    x10  x11  x12  x13  x14  x15  x16  x17
    x18  x19  x1a  e    x1c  x1d  x1e  x1f
);

# Printable characters for escapes
my %UNESCAPES = (
    z => "\x00", a => "\x07", t    => "\x09",
    n => "\x0a", v => "\x0b", f    => "\x0c",
    r => "\x0d", e => "\x1b", '\\' => '\\',
);

# Special magic boolean words
my %QUOTE = map { $_ => 1 } qw{
    null Null NULL
    y Y yes Yes YES n N no No NO
    true True TRUE false False FALSE
    on On ON off Off OFF
};





#####################################################################
# Implementation

# Create an empty YAML::Tiny object
sub new {
    my $class = shift;
    bless [ @_ ], $class;
}

# Create an object from a file
sub read {
    my $class = ref $_[0] ? ref shift : shift;

    # Check the file
    my $file = shift or return $class->_error( 'You did not specify a file name' );
    return $class->_error( "File '$file' does not exist" )              unless -e $file;
    return $class->_error( "'$file' is a directory, not a file" )       unless -f _;
    return $class->_error( "Insufficient permissions to read '$file'" ) unless -r _;

    # Slurp in the file
    local $/ = undef;
    local *CFG;
    unless ( open(CFG, $file) ) {
        return $class->_error("Failed to open file '$file': $!");
    }
    my $contents = <CFG>;
    unless ( close(CFG) ) {
        return $class->_error("Failed to close file '$file': $!");
    }

    $class->read_string( $contents );
}

# Create an object from a string
sub read_string {
    my $class  = ref $_[0] ? ref shift : shift;
    my $self   = bless [], $class;
    my $string = $_[0];
    eval {
        unless ( defined $string ) {
            die \"Did not provide a string to load";
        }



( run in 0.498 second using v1.01-cache-2.11-cpan-0bb4e1dffa6 )