File Coverage

blib/lib/YAML/Marshall.pm
Criterion Covered Total %
statement 41 41 100.0
branch 4 6 66.6
condition 2 3 66.6
subroutine 11 11 100.0
pod 0 4 0.0
total 58 65 89.2


line stmt bran cond sub pod time code
1 2     2   96428 use strict; use warnings;
  2     2   12  
  2         52  
  2         9  
  2         4  
  2         58  
2             package YAML::Marshall;
3              
4 2     2   337 use YAML::Node ();
  2         2  
  2         73  
5              
6             sub import {
7 4     4   100 my $class = shift;
8 2     2   12 no strict 'refs';
  2         4  
  2         159  
9 4         6 my $package = caller;
10 4 50       7 unless (grep { $_ eq $class} @{$package . '::ISA'}) {
  3         14  
  4         16  
11 4         6 push @{$package . '::ISA'}, $class;
  4         35  
12             }
13              
14 4         10 my $tag = shift;
15 4 100       1467 if ( $tag ) {
16 2     2   12 no warnings 'once';
  2         4  
  2         170  
17 1         3 $YAML::TagClass->{$tag} = $package;
18 1         1 ${$package . "::YamlTag"} = $tag;
  1         45  
19             }
20             }
21              
22             sub yaml_dump {
23 3     3 0 11 my $self = shift;
24 2     2   12 no strict 'refs';
  2         4  
  2         351  
25 3   66     4 my $tag = ${ref($self) . "::YamlTag"} || 'perl/' . ref($self);
26 3         9 $self->yaml_node($self, $tag);
27             }
28              
29             sub yaml_load {
30 2     2 0 11 my ($class, $node) = @_;
31 2 50       10 if (my $ynode = $class->yaml_ynode($node)) {
32 2         3 $node = $ynode->{NODE};
33             }
34 2         9 bless $node, $class;
35             }
36              
37             sub yaml_node {
38 4     4 0 20 shift;
39 4         13 YAML::Node->new(@_);
40             }
41              
42             sub yaml_ynode {
43 2     2 0 3 shift;
44 2         5 YAML::Node::ynode(@_);
45             }
46              
47             1;