File Coverage

blib/lib/Module/Format/ModuleList.pm
Criterion Covered Total %
statement 43 45 95.5
branch 4 6 66.6
condition n/a
subroutine 10 10 100.0
pod 4 4 100.0
total 61 65 93.8


line stmt bran cond sub pod time code
1             package Module::Format::ModuleList;
2             $Module::Format::ModuleList::VERSION = '0.4.0';
3 3     3   71309 use warnings;
  3         19  
  3         113  
4 3     3   18 use strict;
  3         7  
  3         67  
5              
6              
7 3     3   1004 use Module::Format::Module;
  3         9  
  3         1192  
8              
9              
10             sub new
11             {
12 2     2 1 5 my $class = shift;
13 2         5 my $self = bless {}, $class;
14 2         7 $self->_init(@_);
15 2         6 return $self;
16             }
17              
18             sub _modules
19             {
20 11     11   17 my $self = shift;
21              
22 11 100       26 if (@_)
23             {
24 2         7 $self->{_modules} = shift;
25             }
26              
27 11         28 return $self->{_modules};
28             }
29              
30             sub _add_module
31             {
32 4     4   10 my ( $self, $module ) = @_;
33              
34 4 50       16 if ( not $module->isa('Module::Format::Module') )
35             {
36 0         0 die "Module is " . ref($module) . " instead of Module::Format::Module.";
37             }
38              
39 4         8 push @{ $self->_modules() }, $module;
  4         7  
40              
41 4         58 return;
42             }
43              
44             sub _init
45             {
46 2     2   4 my ( $self, $args ) = @_;
47              
48 2         6 $self->_modules( [] );
49              
50 2         3 foreach my $module ( @{ $args->{modules} } )
  2         5  
51             {
52 4         10 $self->_add_module($module);
53             }
54              
55 2         5 return;
56             }
57              
58              
59             sub get_modules_list_copy
60             {
61 2     2 1 851 my ($self) = @_;
62              
63 2         5 return [ @{ $self->_modules() } ];
  2         4  
64             }
65              
66              
67             sub format_as
68             {
69 3     3 1 1041 my ( $self, $format ) = @_;
70              
71 3         7 return [ map { $_->format_as($format) } @{ $self->_modules() } ];
  6         17  
  3         6  
72             }
73              
74              
75             sub sane_from_guesses
76             {
77 1     1 1 534 my ( $class, $args ) = @_;
78              
79 1         3 my @modules;
80              
81 1         2 foreach my $string ( @{ $args->{'values'} } )
  1         3  
82             {
83 2         8 my $module = Module::Format::Module->from_guess( { value => $string } );
84              
85 2 50       11 if ( !$module->is_sane() )
86             {
87 0         0 die "Value '$string' does not evaluate as a sane module.";
88             }
89              
90 2         8 push @modules, $module;
91             }
92              
93 1         3 return $class->new( { modules => \@modules } );
94             }
95              
96              
97             1; # End of Module::Format::ModuleList
98              
99             __END__