1 package YAML::Dumper::Base;
2 use strict; use warnings;
3 use YAML::Base; use base 'YAML::Base';
7 field spec_version => '1.0';
8 field indent_width => 2;
10 field use_version => 0;
12 field anchor_prefix => '';
16 field compress_series => 1;
17 field inline_series => 0;
18 field use_aliases => 1;
25 field transferred => {};
26 field id_refcnt => {};
27 field id_anchor => {};
32 field blessed_map => {};
34 # Global Options are an idea taken from Data::Dumper. Really they are just
35 # sugar on top of real OO properties. They make the simple Dump/Load API
37 sub set_global_options {
39 $self->spec_version($YAML::SpecVersion)
40 if defined $YAML::SpecVersion;
41 $self->indent_width($YAML::Indent)
42 if defined $YAML::Indent;
43 $self->use_header($YAML::UseHeader)
44 if defined $YAML::UseHeader;
45 $self->use_version($YAML::UseVersion)
46 if defined $YAML::UseVersion;
47 $self->sort_keys($YAML::SortKeys)
48 if defined $YAML::SortKeys;
49 $self->anchor_prefix($YAML::AnchorPrefix)
50 if defined $YAML::AnchorPrefix;
51 $self->dump_code($YAML::DumpCode || $YAML::UseCode)
52 if defined $YAML::DumpCode or defined $YAML::UseCode;
53 $self->use_block($YAML::UseBlock)
54 if defined $YAML::UseBlock;
55 $self->use_fold($YAML::UseFold)
56 if defined $YAML::UseFold;
57 $self->compress_series($YAML::CompressSeries)
58 if defined $YAML::CompressSeries;
59 $self->inline_series($YAML::InlineSeries)
60 if defined $YAML::InlineSeries;
61 $self->use_aliases($YAML::UseAliases)
62 if defined $YAML::UseAliases;
63 $self->purity($YAML::Purity)
64 if defined $YAML::Purity;
65 $self->stringify($YAML::Stringify)
66 if defined $YAML::Stringify;
71 $self->die('dump() not implemented in this class.');
77 $ref = \$_[0] unless ref $ref;
78 my (undef, undef, $node_id) = YAML::Base->node_info($ref);
79 $self->{blessed_map}->{$node_id};
84 my ($ref, $blessing) = @_;
86 $ref = \$_[0] unless ref $ref;
87 my (undef, undef, $node_id) = YAML::Base->node_info($ref);
88 if (not defined $blessing) {
89 $ynode = YAML::Node->new($ref);
91 elsif (ref $blessing) {
92 $self->die() unless ynode($blessing);
97 my $transfer = $blessing . "::yaml_dump";
98 $self->die() unless defined &{$transfer};
99 $ynode = &{$transfer}($ref);
100 $self->die() unless ynode($ynode);
102 $self->{blessed_map}->{$node_id} = $ynode;
103 my $object = ynode($ynode) or $self->die();
113 YAML::Dumper::Base - Base class for YAML Dumper classes
117 package YAML::Dumper::Something;
118 use YAML::Dumper::Base -base;
122 YAML::Dumper::Base is a base class for creating YAML dumper classes.
126 Ingy döt Net <ingy@cpan.org>
130 Copyright (c) 2006. Ingy döt Net. All rights reserved.
132 This program is free software; you can redistribute it and/or modify it
133 under the same terms as Perl itself.
135 See L<http://www.perl.com/perl/misc/Artistic.html>