summaryrefslogtreecommitdiff
path: root/Master/tlpkg/tlperl0/lib/YAML/Marshall.pm
diff options
context:
space:
mode:
Diffstat (limited to 'Master/tlpkg/tlperl0/lib/YAML/Marshall.pm')
-rwxr-xr-xMaster/tlpkg/tlperl0/lib/YAML/Marshall.pm81
1 files changed, 81 insertions, 0 deletions
diff --git a/Master/tlpkg/tlperl0/lib/YAML/Marshall.pm b/Master/tlpkg/tlperl0/lib/YAML/Marshall.pm
new file mode 100755
index 00000000000..1986f58df61
--- /dev/null
+++ b/Master/tlpkg/tlperl0/lib/YAML/Marshall.pm
@@ -0,0 +1,81 @@
+package YAML::Marshall;
+
+use strict;
+use warnings;
+use YAML::Node ();
+
+our $VERSION = '0.71';
+
+sub import {
+ my $class = shift;
+ no strict 'refs';
+ my $package = caller;
+ unless (grep { $_ eq $class} @{$package . '::ISA'}) {
+ push @{$package . '::ISA'}, $class;
+ }
+
+ my $tag = shift;
+ if ( $tag ) {
+ no warnings 'once';
+ $YAML::TagClass->{$tag} = $package;
+ ${$package . "::YamlTag"} = $tag;
+ }
+}
+
+sub yaml_dump {
+ my $self = shift;
+ no strict 'refs';
+ my $tag = ${ref($self) . "::YamlTag"} || 'perl/' . ref($self);
+ $self->yaml_node($self, $tag);
+}
+
+sub yaml_load {
+ my ($class, $node) = @_;
+ if (my $ynode = $class->yaml_ynode($node)) {
+ $node = $ynode->{NODE};
+ }
+ bless $node, $class;
+}
+
+sub yaml_node {
+ shift;
+ YAML::Node->new(@_);
+}
+
+sub yaml_ynode {
+ shift;
+ YAML::Node::ynode(@_);
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+YAML::Marshall - YAML marshalling class you can mixin to your classes
+
+=head1 SYNOPSIS
+
+ package Bar;
+ use Foo -base;
+ use YAML::Marshall -mixin;
+
+=head1 DESCRIPTION
+
+For classes that want to handle their own YAML serialization.
+
+=head1 AUTHOR
+
+Ingy döt Net <ingy@cpan.org>
+
+=head1 COPYRIGHT
+
+Copyright (c) 2006. Ingy döt Net. All rights reserved.
+
+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