File Coverage

blib/lib/Data/CompactDump.pm
Criterion Covered Total %
statement 18 23 78.2
branch 6 12 50.0
condition n/a
subroutine 4 4 100.0
pod 1 1 100.0
total 29 40 72.5


line stmt bran cond sub pod time code
1 1     1   27273 use 5.012; #package NAME VERSION
  1         3  
  1         83  
2             package Data::CompactDump 0.04;
3             # ABSTRACT: Perl extension for dumping xD structures in compact form
4             $Data::CompactDump::VERSION = '0.04';
5              
6 1     1   6 use strict;
  1         2  
  1         41  
7 1     1   6 use base 'Exporter';
  1         7  
  1         484  
8              
9             our @EXPORT = qw(compact);
10              
11              
12             sub compact {
13 10 50   10 1 1071 unless (defined (my $q = shift)) {
    100          
    50          
    0          
    0          
14 0         0 return 'undef';
15             } elsif (not ref $q) {
16 6 100       23 if ($q =~ /^\d+$/) {
17 5         22 return $q;
18             } else {
19 1         2 $q =~ s/\n/\\n/g; $q =~ s/\r/\\r/g; $q =~ s/'/\\'/g;
  1         3  
  1         2  
20 1         4 return "\'" . $q . "\'";
21             }
22             } elsif ((my $rr = ref $q) eq 'ARRAY') {
23 4         8 return '[ ' . join(', ',map { compact($_); } @$q) . ' ]';
  8         22  
24             } elsif ($rr eq 'SCALAR') {
25 0           return '\\' . compact($$q);
26             } elsif ($rr eq 'HASH') {
27 0           return '{ ' . join(', ',map { $_ . ' => ' . compact($$q{$_}); }
  0            
28             keys %$q) . ' }';
29 0           } else { return '\?'; }
30             }
31              
32             1;
33              
34             __END__