/usr/share/perl5/YAML/Dumper/Base.pm is in libyaml-perl 1.13-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 | package YAML::Dumper::Base;
use YAML::Mo;
use YAML::Node;
# YAML Dumping options
has spec_version => default => sub {'1.0'};
has indent_width => default => sub {2};
has use_header => default => sub {1};
has use_version => default => sub {0};
has sort_keys => default => sub {1};
has anchor_prefix => default => sub {''};
has dump_code => default => sub {0};
has use_block => default => sub {0};
has use_fold => default => sub {0};
has compress_series => default => sub {1};
has inline_series => default => sub {0};
has use_aliases => default => sub {1};
has purity => default => sub {0};
has stringify => default => sub {0};
# Properties
has stream => default => sub {''};
has document => default => sub {0};
has transferred => default => sub {{}};
has id_refcnt => default => sub {{}};
has id_anchor => default => sub {{}};
has anchor => default => sub {1};
has level => default => sub {0};
has offset => default => sub {[]};
has headless => default => sub {0};
has blessed_map => default => sub {{}};
# Global Options are an idea taken from Data::Dumper. Really they are just
# sugar on top of real OO properties. They make the simple Dump/Load API
# easy to configure.
sub set_global_options {
my $self = shift;
$self->spec_version($YAML::SpecVersion)
if defined $YAML::SpecVersion;
$self->indent_width($YAML::Indent)
if defined $YAML::Indent;
$self->use_header($YAML::UseHeader)
if defined $YAML::UseHeader;
$self->use_version($YAML::UseVersion)
if defined $YAML::UseVersion;
$self->sort_keys($YAML::SortKeys)
if defined $YAML::SortKeys;
$self->anchor_prefix($YAML::AnchorPrefix)
if defined $YAML::AnchorPrefix;
$self->dump_code($YAML::DumpCode || $YAML::UseCode)
if defined $YAML::DumpCode or defined $YAML::UseCode;
$self->use_block($YAML::UseBlock)
if defined $YAML::UseBlock;
$self->use_fold($YAML::UseFold)
if defined $YAML::UseFold;
$self->compress_series($YAML::CompressSeries)
if defined $YAML::CompressSeries;
$self->inline_series($YAML::InlineSeries)
if defined $YAML::InlineSeries;
$self->use_aliases($YAML::UseAliases)
if defined $YAML::UseAliases;
$self->purity($YAML::Purity)
if defined $YAML::Purity;
$self->stringify($YAML::Stringify)
if defined $YAML::Stringify;
}
sub dump {
my $self = shift;
$self->die('dump() not implemented in this class.');
}
sub blessed {
my $self = shift;
my ($ref) = @_;
$ref = \$_[0] unless ref $ref;
my (undef, undef, $node_id) = YAML::Mo::Object->node_info($ref);
$self->{blessed_map}->{$node_id};
}
sub bless {
my $self = shift;
my ($ref, $blessing) = @_;
my $ynode;
$ref = \$_[0] unless ref $ref;
my (undef, undef, $node_id) = YAML::Mo::Object->node_info($ref);
if (not defined $blessing) {
$ynode = YAML::Node->new($ref);
}
elsif (ref $blessing) {
$self->die() unless ynode($blessing);
$ynode = $blessing;
}
else {
no strict 'refs';
my $transfer = $blessing . "::yaml_dump";
$self->die() unless defined &{$transfer};
$ynode = &{$transfer}($ref);
$self->die() unless ynode($ynode);
}
$self->{blessed_map}->{$node_id} = $ynode;
my $object = ynode($ynode) or $self->die();
return $object;
}
1;
|