File Coverage

blib/lib/Bio/Tools/EUtilities/Summary/ItemContainerI.pm
Criterion Covered Total %
statement 39 56 69.6
branch 5 14 35.7
condition 0 3 0.0
subroutine 8 12 66.6
pod 7 7 100.0
total 59 92 64.1


line stmt bran cond sub pod time code
1             package Bio::Tools::EUtilities::Summary::ItemContainerI;
2             $Bio::Tools::EUtilities::Summary::ItemContainerI::VERSION = '1.77';
3 1     1   7 use utf8;
  1         2  
  1         5  
4 1     1   35 use strict;
  1         2  
  1         17  
5 1     1   5 use warnings;
  1         2  
  1         24  
6 1     1   10 use base qw(Bio::Tools::EUtilities::EUtilDataI);
  1         3  
  1         707  
7              
8             # ABSTRACT: Abtract interface methods for accessing Item information from any Item-containing class. This pertains to either DocSums or to Items themselves (which can be layered).
9             # AUTHOR: Chris Fields
10             # OWNER: 2006-2013 Chris Fields
11             # LICENSE: Perl_5
12              
13              
14              
15             sub next_Item {
16 0     0 1 0 my ($self, $request) = @_;
17 0 0       0 unless ($self->{"_items_it"}) {
18 0 0 0     0 my @items = ($request && $request eq 'flatten') ?
19             $self->get_all_Items :
20             $self->get_Items ;
21 0     0   0 $self->{"_items_it"} = sub {return shift @items}
22 0         0 }
23 0         0 $self->{'_items_it'}->();
24             }
25              
26              
27             sub get_Items {
28 7     7 1 749 my $self = shift;
29 7 50       24 return ref $self->{'_items'} ? @{ $self->{'_items'} } : return ();
  7         29  
30             }
31              
32              
33             sub get_all_Items {
34 13     13 1 28 my $self = shift;
35 13 100       36 unless ($self->{'_ordered_items'}) {
36 6         21 for my $item ($self->get_Items) {
37 52         77 push @{$self->{'_ordered_items'}}, $item;
  52         98  
38 52         115 for my $ls ($item->get_ListItems) {
39 16         25 push @{$self->{'_ordered_items'}}, $ls;
  16         27  
40 16         36 for my $st ($ls->get_StructureItems) {
41 80         117 push @{$self->{'_ordered_items'}}, $st;
  80         139  
42             }
43             }
44             }
45             }
46 13         23 return @{$self->{'_ordered_items'}};
  13         48  
47             }
48              
49              
50             sub get_all_names {
51 0     0 1 0 my ($self) = @_;
52 0         0 my %tmp;
53 0         0 my @data = grep {!$tmp{$_}++}
54 0         0 map {$_->get_name} $self->get_all_Items;
  0         0  
55 0         0 return @data;
56             }
57              
58              
59             sub get_Items_by_name {
60 0     0 1 0 my ($self, $key) = @_;
61 0 0       0 return unless $key;
62 0         0 my @data = grep {$_->get_name eq $key}
  0         0  
63             $self->get_all_Items;
64 0         0 return @data;
65             }
66              
67              
68             sub get_contents_by_name {
69 5     5 1 18 my ($self, $key) = @_;
70 5 50       12 return unless $key;
71 19         30 my @data = map {$_->get_content}
72 5         18 grep {$_->get_name eq $key}
  136         256  
73             $self->get_all_Items;
74 5         35 return @data;
75             }
76              
77              
78             sub get_type_by_name {
79 5     5 1 18 my ($self, $key) = @_;
80 5 50       18 return unless $key;
81 5         17 my ($it) = grep {$_->get_name eq $key} $self->get_all_Items;
  136         257  
82 5         27 return $it->get_type;
83             }
84              
85             1;
86              
87             __END__