File Coverage

blib/lib/Enbld/Target/Attribute/VersionList.pm
Criterion Covered Total %
statement 44 44 100.0
branch 8 8 100.0
condition n/a
subroutine 8 8 100.0
pod 0 3 0.0
total 60 63 95.2


line stmt bran cond sub pod time code
1             package Enbld::Target::Attribute::VersionList;
2              
3 3     3   15718 use strict;
  3         13  
  3         105  
4 3     3   18 use warnings;
  3         6  
  3         83  
5              
6 3     3   15 use Carp;
  3         7  
  3         234  
7              
8 3     3   16 use parent qw/Enbld::Target::AttributeExtension::Word/;
  3         5  
  3         21  
9              
10             require Enbld::Exception;
11              
12             sub initialize {
13 54     54 0 314 my ( $self, $param ) = @_;
14              
15 54 100       171 if ( ! defined $param ) {
16             $self->{callback} = sub {
17 35     35   63 my $attributes = shift;
18              
19 35         379 require Enbld::HTTP;
20 35         229 my $html = Enbld::HTTP->get_html( $attributes->IndexSite );
21 35         249 my $list = $html->parse_version(
22             $attributes->IndexParserForm,
23             $attributes->VersionForm
24             );
25              
26 35         215 return $list;
27 48         528 };
28              
29 48         148 return $self;
30             };
31              
32 6 100       24 if ( $param ) {
33 5         27 $self->SUPER::initialize( $param );
34 5         10 return $self;
35             }
36              
37 1         2 my $err = "Attribute 'VersionList' isn't defined";
38 1         7 croak( Enbld::Exception->new( $err ));
39             }
40              
41             sub validate {
42 40     40 0 236 my ( $self, $value ) = @_;
43              
44 40 100       153 unless ( ref( $value ) eq 'ARRAY' ) {
45 1         3 my $type = ref( $self );
46 1         5 $type =~ s/.*:://;
47              
48 1         2 my $err = "Attribute 'VersionList' isn't ARRAY reference";
49 1         4 croak( Enbld::Exception->new( $err, $value ));
50             }
51              
52 39 100       52 if ( ! @{ $value } ) {
  39         130  
53 1         2 my $err = "Attribute 'VersionList' is no version list";
54 1         4 croak( Enbld::Exception->new( $err ));
55             }
56              
57 38         63 foreach my $string ( @{ $value } ) {
  38         159  
58 74         276 $self->SUPER::validate( $string );
59             }
60              
61 37         66 return $value;
62             }
63              
64             sub to_value {
65 40     40 0 78 my $self = shift;
66              
67 40         190 my $value = $self->evaluate;
68              
69 40         134 $self->validate( $value );
70              
71 37         129 return $value;
72             }
73              
74             1;