File Coverage

blib/lib/Data/Petitcom.pm
Criterion Covered Total %
statement 54 67 80.6
branch 0 4 0.0
condition 2 8 25.0
subroutine 12 14 85.7
pod 5 5 100.0
total 73 98 74.4


line stmt bran cond sub pod time code
1             package Data::Petitcom;
2              
3 2     2   36 use 5.10.0;
  2         8  
  2         126  
4 2     2   21 use strict;
  2         4  
  2         80  
5 2     2   12 use warnings;
  2         5  
  2         152  
6             our $VERSION = '0.03';
7              
8 2     2   1078 use parent qw{ Exporter };
  2         400  
  2         16  
9             our @EXPORT = qw{ Save Load QRCode };
10             our @EXPORT_OK = qw{ SaveFile LoadFile };
11             our %EXPORT_TAGS = ( all => [qw{ Save Load QRCode SaveFile LoadFile }] );
12              
13 2     2   239 use Carp ();
  2         6  
  2         36  
14 2     2   2104 use Data::Petitcom::PTC;
  2         5  
  2         77  
15 2     2   1487 use Data::Petitcom::QRCode;
  2         6  
  2         129  
16 2     2   27 use Data::Petitcom::Resource;
  2         4  
  2         140  
17 2     2   953 use Path::Class;
  2         44048  
  2         1906  
18              
19             sub Save {
20 4     4 1 2856 my $raw_data = shift;
21 4         15 my %opts = @_;
22 4   100     28 my $resource = delete $opts{resource} || 'PRG';
23 4         30 my $obj_resource = get_resource( resource => $resource, %opts );
24 4         15 $obj_resource->data($raw_data);
25 4         30 my $obj_ptc = $obj_resource->save(%opts);
26 4         24 return $obj_ptc->dump;
27             }
28              
29             sub Load {
30 3     3 1 2450 my $raw_ptc = shift;
31 3         14 my %opts = @_;
32 3         30 my $obj_ptc = Data::Petitcom::PTC->new->load($raw_ptc);
33 3         14 my $obj_resource = $obj_ptc->restore(%opts);
34 3         19 return $obj_resource->data;
35             }
36              
37             sub QRCode {
38 3     3 1 13 my $ptc = shift;
39 3         9 my %opts = @_;
40 3         12 my $qr_type = delete $opts{type};
41 3         8 my $qr_ecc = delete $opts{ecc};
42 3         6 my $qr_version = delete $opts{version};
43              
44 3         7 my $raw_ptc = undef;
45 3         8 given ($ptc) {
46 3         9 when ( ref $ptc eq 'Data::Petitcom::PTC' ) {
47 1         36 $raw_ptc = $ptc->dump;
48             }
49 2         18 when ( ! Data::Petitcom::PTC->is_ptc($ptc) ) {
50 1         12 $raw_ptc = Save($ptc, %opts);
51             }
52 1         14 default { $raw_ptc = $ptc }
  1         5  
53             }
54              
55 3         31 my $qr = Data::Petitcom::QRCode->new(
56             type => $qr_type,
57             ecc => $qr_ecc,
58             version => $qr_version
59             );
60 3         14 return $qr->plot($raw_ptc);
61             }
62              
63             sub SaveFile {
64 0     0 1   my $save_file = shift;
65 0           my $raw_data = shift;
66 0 0 0       my $save_fh
67             = ( ref $save_file eq 'GLOB' )
68             ? $save_file
69             : file($save_file)->open('>') || Carp::croak "open failed: $!";
70 0           my $raw_ptc = Save($raw_data, @_);
71 0           binmode $save_fh;
72 0           print $save_fh $raw_ptc;
73             }
74              
75             sub LoadFile {
76 0     0 1   my $load_file = shift;
77 0 0 0       my $load_fh
78             = ( ref $load_file eq 'GLOB' )
79             ? $load_file
80             : file($load_file)->open('<') || Carp::croak "open failed: $!";
81 0           binmode $load_fh;
82 0           my $raw_data = Load( do { local $/; <$load_fh> }, @_ );
  0            
  0            
83 0           return $raw_data;
84             }
85              
86             1;
87             __END__