File Coverage

blib/lib/Enbld/Target/Attribute/SortedVersionList.pm
Criterion Covered Total %
statement 37 48 77.0
branch 3 8 37.5
condition n/a
subroutine 9 9 100.0
pod 0 3 0.0
total 49 68 72.0


line stmt bran cond sub pod time code
1             package Enbld::Target::Attribute::SortedVersionList;
2              
3 3     3   15723 use strict;
  3         9  
  3         117  
4 3     3   17 use warnings;
  3         6  
  3         97  
5              
6 3     3   17 use Carp;
  3         5  
  3         343  
7 3     3   16 use version;
  3         5  
  3         36  
8              
9 3     3   249 use parent qw/Enbld::Target::AttributeExtension::Word/;
  3         6  
  3         55  
10              
11             require Enbld::Exception;
12              
13             sub initialize {
14 49     49 0 168 my ( $self, $param ) = @_;
15              
16 49 50       163 if ( ! defined $param ) {
17             $self->{callback} = sub {
18 35     35   53 my $attributes = shift;
19              
20 35         298 my $list = $attributes->VersionList;
21              
22 34         1973 my @sorted = sort {
23 35         326 version->declare( $a ) cmp version->declare( $b )
24 35         68 } @{ $list };
25              
26 35         282 return \@sorted;
27 49         685 };
28              
29 49         162 return $self;
30             };
31              
32 0 0       0 if ( $param ) {
33 0         0 $self->SUPER::initialize( $param );
34 0         0 return $self;
35             }
36              
37 0         0 my $err = "Attribute 'SortedVersionList' isn't defined";
38 0         0 croak( Enbld::Exception->new( $err ));
39             }
40              
41             sub validate {
42 39     39 0 78 my ( $self, $value ) = @_;
43              
44 39 50       124 unless ( ref( $value ) eq 'ARRAY' ) {
45 0         0 my $type = ref( $self );
46 0         0 $type =~ s/.*:://;
47              
48 0         0 my $err = "Attribute 'SortedVersionList' isn't ARRAY reference";
49 0         0 croak( Enbld::Exception->new( $err, $value ));
50             }
51              
52 39 50       60 if ( ! @{ $value } ) {
  39         264  
53 0         0 my $err = "Attribute 'SortedVersionList' is no version list";
54 0         0 croak( Enbld::Exception->new( $err ));
55             }
56              
57 39         58 foreach my $string ( @{ $value } ) {
  39         94  
58 77         260 $self->SUPER::validate( $string );
59             }
60              
61 39         88 return $value;
62             }
63              
64             sub to_value {
65 39     39 0 100 my $self = shift;
66              
67 39         174 my $value = $self->evaluate;
68              
69 39         3600 $self->validate( $value );
70              
71 39         137 return $value;
72             }
73              
74             1;