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   8946 use strict;
  3         5  
  3         76  
4 3     3   10 use warnings;
  3         4  
  3         61  
5              
6 3     3   9 use Carp;
  3         5  
  3         154  
7              
8 3     3   16 use parent qw/Enbld::Target::AttributeExtension::Word/;
  3         3  
  3         14  
9              
10             require Enbld::Exception;
11              
12             sub initialize {
13 54     54 0 104 my ( $self, $param ) = @_;
14              
15 54 100       168 if ( ! defined $param ) {
16             $self->{callback} = sub {
17 35     35   42 my $attributes = shift;
18              
19 35         186 require Enbld::HTTP;
20 35         186 my $html = Enbld::HTTP->get_html( $attributes->IndexSite );
21 35         189 my $list = $html->parse_version(
22             $attributes->IndexParserForm,
23             $attributes->VersionForm
24             );
25              
26 35         117 return $list;
27 48         317 };
28              
29 48         110 return $self;
30             };
31              
32 6 100       12 if ( $param ) {
33 5         13 $self->SUPER::initialize( $param );
34 5         6 return $self;
35             }
36              
37 1         1 my $err = "Attribute 'VersionList' isn't defined";
38 1         10 croak( Enbld::Exception->new( $err ));
39             }
40              
41             sub validate {
42 40     40 0 87 my ( $self, $value ) = @_;
43              
44 40 100       144 unless ( ref( $value ) eq 'ARRAY' ) {
45 1         1 my $type = ref( $self );
46 1         3 $type =~ s/.*:://;
47              
48 1         1 my $err = "Attribute 'VersionList' isn't ARRAY reference";
49 1         3 croak( Enbld::Exception->new( $err, $value ));
50             }
51              
52 39 100       37 if ( ! @{ $value } ) {
  39         102  
53 1         2 my $err = "Attribute 'VersionList' is no version list";
54 1         3 croak( Enbld::Exception->new( $err ));
55             }
56              
57 38         45 foreach my $string ( @{ $value } ) {
  38         105  
58 74         160 $self->SUPER::validate( $string );
59             }
60              
61 37         45 return $value;
62             }
63              
64             sub to_value {
65 40     40 0 51 my $self = shift;
66              
67 40         207 my $value = $self->evaluate;
68              
69 40         112 $self->validate( $value );
70              
71 37         92 return $value;
72             }
73              
74             1;