File Coverage

blib/lib/Enbld/Target/Attribute/Dependencies.pm
Criterion Covered Total %
statement 30 33 90.9
branch 6 8 75.0
condition n/a
subroutine 7 7 100.0
pod 0 3 0.0
total 43 51 84.3


line stmt bran cond sub pod time code
1             package Enbld::Target::Attribute::Dependencies;
2              
3 1     1   1839 use strict;
  1         2  
  1         23  
4 1     1   4 use warnings;
  1         2  
  1         20  
5              
6 1     1   4 use Carp;
  1         1  
  1         46  
7              
8 1     1   5 use parent qw/Enbld::Target::AttributeExtension::Word/;
  1         1  
  1         3  
9              
10             sub initialize {
11 46     46 0 87 my ( $self, $param ) = @_;
12              
13 46 100       157 if ( ref( $param ) eq 'CODE' ) {
14 3         8 $self->{callback} = $param;
15 3         10 return $self;
16             }
17              
18             # Usually, as for supporting a Dependencies, only OS X (darwin) is.
19             # However, Enbld supports a Dependencies by the Code Reference
20             # If You are and all the operating systems.
21 43 50       126 $self->{value} = ( $^O eq 'darwin' ) ? $param : undef;
22              
23 43         88 $self->{is_evaluated}++;
24              
25 43         82 return $self;
26             }
27              
28             sub validate {
29 6     6 0 11 my ( $self, $value ) = @_;
30              
31 6 50       18 unless ( ref( $value ) eq 'ARRAY' ) {
32 0         0 my $err = "Attribute 'Dependencies' isn't ARRAY reference";
33 0         0 require Enbld::Exception;
34 0         0 croak( Enbld::Exception->new( $err, $value ));
35             }
36              
37 6         11 foreach my $string ( @{ $value } ) {
  6         20  
38 6         39 $self->SUPER::validate( $string );
39             }
40              
41 6         8 return $value;
42             }
43              
44             sub to_value {
45 32     32 0 45 my $self = shift;
46              
47 32         110 my $value = $self->evaluate;
48              
49 32 100       170 return [] if ( ! defined $value );
50              
51 6         25 $self->validate( $value );
52              
53 6         23 return $value;
54             }
55              
56             1;