File Coverage

lib/Data/TagDB/MultiIterator.pm
Criterion Covered Total %
statement 14 34 41.1
branch 0 4 0.0
condition n/a
subroutine 5 8 62.5
pod 3 3 100.0
total 22 49 44.9


line stmt bran cond sub pod time code
1             # Copyright (c) 2024-2025 Philipp Schafft
2              
3             # licensed under Artistic License 2.0 (see LICENSE file)
4              
5             # ABSTRACT: Work with Tag databases
6              
7             package Data::TagDB::MultiIterator;
8              
9 1     1   15 use v5.10;
  1         4  
10 1     1   6 use strict;
  1         2  
  1         28  
11 1     1   3 use warnings;
  1         2  
  1         62  
12              
13 1     1   6 use parent 'Data::TagDB::Iterator';
  1         2  
  1         8  
14              
15 1     1   79 use Carp;
  1         2  
  1         502  
16              
17             our $VERSION = v0.12;
18              
19              
20             sub new {
21 0     0 1   my ($pkg, %opts) = @_;
22              
23 0           foreach my $required (qw(db iterators)) {
24 0 0         croak 'Missing required member: '.$required unless defined $opts{$required};
25             }
26              
27 0           return bless \%opts, $pkg;
28             }
29              
30             sub next {
31 0     0 1   my ($self) = @_;
32 0           my $iterators = $self->{iterators};
33              
34 0           while (scalar @{$iterators}) {
  0            
35 0           my $entry = $iterators->[0]->next;
36 0 0         return $entry if defined $entry;
37 0           $iterators->[0]->finish;
38 0           shift(@{$iterators});
  0            
39             }
40              
41 0           return undef;
42             }
43              
44             sub finish {
45 0     0 1   my ($self) = @_;
46 0           foreach my $iter (@{$self->{iterators}}) {
  0            
47 0           $iter->finish;
48             }
49 0           @{$self->{iterators}} = ();
  0            
50             }
51              
52             1;
53              
54             __END__
55              
56             =pod
57              
58             =encoding UTF-8
59              
60             =head1 NAME
61              
62             Data::TagDB::MultiIterator - Work with Tag databases
63              
64             =head1 VERSION
65              
66             version v0.12
67              
68             =head1 SYNOPSIS
69              
70             use Data::TagDB;
71              
72             This is an interal package. See L<Data::TagDB::Iterator>.
73              
74             =head1 AUTHOR
75              
76             Philipp Schafft <lion@cpan.org>
77              
78             =head1 COPYRIGHT AND LICENSE
79              
80             This software is Copyright (c) 2024-2025 by Philipp Schafft <lion@cpan.org>.
81              
82             This is free software, licensed under:
83              
84             The Artistic License 2.0 (GPL Compatible)
85              
86             =cut