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   2648 use strict;
  1         2  
  1         28  
4 1     1   4 use warnings;
  1         1  
  1         18  
5              
6 1     1   3 use Carp;
  1         1  
  1         52  
7              
8 1     1   7 use parent qw/Enbld::Target::AttributeExtension::Word/;
  1         1  
  1         5  
9              
10             sub initialize {
11 46     46 0 119 my ( $self, $param ) = @_;
12              
13 46 100       174 if ( ref( $param ) eq 'CODE' ) {
14 3         9 $self->{callback} = $param;
15 3         11 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       260 $self->{value} = ( $^O eq 'darwin' ) ? $param : undef;
22              
23 43         77 $self->{is_evaluated}++;
24              
25 43         77 return $self;
26             }
27              
28             sub validate {
29 6     6 0 11 my ( $self, $value ) = @_;
30              
31 6 50       22 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         8 foreach my $string ( @{ $value } ) {
  6         21  
38 6         34 $self->SUPER::validate( $string );
39             }
40              
41 6         11 return $value;
42             }
43              
44             sub to_value {
45 32     32 0 54 my $self = shift;
46              
47 32         137 my $value = $self->evaluate;
48              
49 32 100       204 return [] if ( ! defined $value );
50              
51 6         18 $self->validate( $value );
52              
53 6         38 return $value;
54             }
55              
56             1;