1 package YAML::Dumper::Base;
9 our @ISA = 'YAML::Base';
11 # YAML Dumping options
12 field spec_version => '1.0';
13 field indent_width => 2;
14 field use_header => 1;
15 field use_version => 0;
17 field anchor_prefix => '';
21 field compress_series => 1;
22 field inline_series => 0;
23 field use_aliases => 1;
30 field transferred => {};
31 field id_refcnt => {};
32 field id_anchor => {};
37 field blessed_map => {};
39 # Global Options are an idea taken from Data::Dumper. Really they are just
40 # sugar on top of real OO properties. They make the simple Dump/Load API
42 sub set_global_options {
44 $self->spec_version($YAML::SpecVersion)
45 if defined $YAML::SpecVersion;
46 $self->indent_width($YAML::Indent)
47 if defined $YAML::Indent;
48 $self->use_header($YAML::UseHeader)
49 if defined $YAML::UseHeader;
50 $self->use_version($YAML::UseVersion)
51 if defined $YAML::UseVersion;
52 $self->sort_keys($YAML::SortKeys)
53 if defined $YAML::SortKeys;
54 $self->anchor_prefix($YAML::AnchorPrefix)
55 if defined $YAML::AnchorPrefix;
56 $self->dump_code($YAML::DumpCode || $YAML::UseCode)
57 if defined $YAML::DumpCode or defined $YAML::UseCode;
58 $self->use_block($YAML::UseBlock)
59 if defined $YAML::UseBlock;
60 $self->use_fold($YAML::UseFold)
61 if defined $YAML::UseFold;
62 $self->compress_series($YAML::CompressSeries)
63 if defined $YAML::CompressSeries;
64 $self->inline_series($YAML::InlineSeries)
65 if defined $YAML::InlineSeries;
66 $self->use_aliases($YAML::UseAliases)
67 if defined $YAML::UseAliases;
68 $self->purity($YAML::Purity)
69 if defined $YAML::Purity;
70 $self->stringify($YAML::Stringify)
71 if defined $YAML::Stringify;
76 $self->die('dump() not implemented in this class.');
82 $ref = \$_[0] unless ref $ref;
83 my (undef, undef, $node_id) = YAML::Base->node_info($ref);
84 $self->{blessed_map}->{$node_id};
89 my ($ref, $blessing) = @_;
91 $ref = \$_[0] unless ref $ref;
92 my (undef, undef, $node_id) = YAML::Base->node_info($ref);
93 if (not defined $blessing) {
94 $ynode = YAML::Node->new($ref);
96 elsif (ref $blessing) {
97 $self->die() unless ynode($blessing);
102 my $transfer = $blessing . "::yaml_dump";
103 $self->die() unless defined &{$transfer};
104 $ynode = &{$transfer}($ref);
105 $self->die() unless ynode($ynode);
107 $self->{blessed_map}->{$node_id} = $ynode;
108 my $object = ynode($ynode) or $self->die();
118 YAML::Dumper::Base - Base class for YAML Dumper classes
122 package YAML::Dumper::Something;
123 use YAML::Dumper::Base -base;
127 YAML::Dumper::Base is a base class for creating YAML dumper classes.
131 Ingy döt Net <ingy@cpan.org>
135 Copyright (c) 2006. Ingy döt Net. All rights reserved.
137 This program is free software; you can redistribute it and/or modify it
138 under the same terms as Perl itself.
140 See L<http://www.perl.com/perl/misc/Artistic.html>