File Coverage

blib/lib/Data/Petitcom/Resource.pm
Criterion Covered Total %
statement 34 36 94.4
branch 6 10 60.0
condition 4 5 80.0
subroutine 9 11 81.8
pod 0 6 0.0
total 53 68 77.9


line stmt bran cond sub pod time code
1             package Data::Petitcom::Resource;
2              
3 8     8   2589 use strict;
  8         17  
  8         418  
4 8     8   112 use warnings;
  8         29  
  8         375  
5              
6 8     8   3924 use parent qw{ Exporter };
  8         815  
  8         66  
7             our @EXPORT = qw{ get_resource };
8              
9 8     8   903 use Carp ();
  8         14  
  8         297  
10 8     8   10021 use Module::Load ();
  8         10823  
  8         3548  
11              
12             sub get_resource {
13 13     13 0 964 my %opts = @_;
14 13   100     66 my $resource = delete $opts{resource} || 'PRG';
15 13         53 my $pkg_resource = join '::', __PACKAGE__, uc($resource);
16 13         63 Module::Load::load $pkg_resource;
17 12         733 my $obj_resource = $pkg_resource->new( resource => $resource, %opts );
18 12 50       102 Carp::croak "initialize failed: $!"
19             unless ( $obj_resource->isa(__PACKAGE__) );
20 12         59 return $obj_resource;
21             }
22              
23             my %defaults = ( data => undef );
24              
25             sub new {
26 18 50   18 0 1308 my $class = ref $_[0] ? ref shift : shift;
27 18         93 my $self = bless {@_}, $class;
28 18 50       245 $self->init() if ( $self->can('init') );
29 18         49 return $self;
30             }
31              
32             sub init {
33 18     18 0 41 my $self = shift;
34 18         77 for ( keys %defaults ) {
35 18   66     181 my $value = $self->{$_} || $defaults{$_};
36 18 50       171 ( $self->can($_) ) ? $self->$_($value) : ( $self->{$_} = $value );
37             }
38 18         46 return $self;
39             }
40              
41             sub data {
42 22     22 0 1137 my $self = shift;
43 22 100       86 $self->{data} = shift if (@_);
44 22         232 return $self->{data};
45             }
46              
47 0     0 0   sub save { die "override save" }
48 0     0 0   sub load { die "override load" }
49              
50             1;