File Coverage

inc/My/ConfigPl.pm
Criterion Covered Total %
statement 23 37 62.1
branch 1 6 16.6
condition n/a
subroutine 7 10 70.0
pod 0 5 0.0
total 31 58 53.4


line stmt bran cond sub pod time code
1             package My::ConfigPl;
2              
3 3     3   2062 use strict;
  3         6  
  3         92  
4 3     3   11 use warnings;
  3         3  
  3         121  
5 3     3   1891 use Data::Dumper ();
  3         24898  
  3         87  
6 3     3   15 use Carp qw( croak );
  3         3  
  3         196  
7 3     3   16 use File::Path qw( mkpath );
  3         4  
  3         1123  
8              
9 0     0 0 0 sub dir { croak "subclasss requires dir method" }
10 0     0 0 0 sub file { croak "subclasss requires file method" }
11              
12             sub new
13             {
14 3     3 0 16 my $class = shift;
15 3         4 my $data;
16 3 50       14 if(-e $class->file)
17             {
18 3         7 $data = do "./@{[ $class->file ]}";
  3         10  
19             }
20             else
21             {
22 0         0 $data = { 'test-key' => 'test-value' };
23             }
24 3         59 bless { data => $data }, $class;
25             }
26              
27             sub get
28             {
29 8     8 0 70 my($self, $name) = @_;
30 8         61 $self->{data}->{$name};
31             }
32              
33             sub set
34             {
35 0     0 0   my($self, $name, $value) = @_;
36 0           $self->{data}->{$name} = $value;
37              
38 0           my $dd = Data::Dumper->new([$self->{data}],['x'])
39             ->Indent(1)
40             ->Terse(0)
41             ->Purity(1)
42             ->Sortkeys(1)
43             ->Dump;
44              
45 0 0         mkpath( $self->dir, 0, 0755 ) unless -d $self->dir;
46              
47 0           my $fh;
48 0 0         open($fh, '>', $self->file) || die "error writing @{[ $self->file ]}";
  0            
49 0           print $fh 'do { my ';
50 0           print $fh $dd;
51 0           print $fh '$x;}';
52 0           close $fh;
53             }
54              
55             1;