File Coverage

blib/lib/Story/Interact/PageSource/Waterfall.pm
Criterion Covered Total %
statement 29 32 90.6
branch 2 2 100.0
condition n/a
subroutine 9 10 90.0
pod 0 2 0.0
total 40 46 86.9


line stmt bran cond sub pod time code
1 5     5   148 use 5.010001;
  5         24  
2 5     5   36 use strict;
  5         23  
  5         115  
3 5     5   37 use warnings;
  5         11  
  5         296  
4              
5             package Story::Interact::PageSource::Waterfall;
6              
7             our $AUTHORITY = 'cpan:TOBYINK';
8             our $VERSION = '0.001014';
9              
10 5     5   38 use Moo;
  5         16  
  5         37  
11 5     5   1610 use Types::Common -types;
  5         25  
  5         41  
12 5     5   68451 use Types::Path::Tiny -types;
  5         17  
  5         38  
13 5     5   6590 use List::Util qw( uniqstr );
  5         14  
  5         498  
14 5     5   41 use namespace::clean;
  5         19  
  5         45  
15              
16             with 'Story::Interact::PageSource';
17              
18             has 'sources' => (
19             is => 'ro',
20             isa => ArrayRef->of( ConsumerOf->of( 'Story::Interact::PageSource' ) ),
21             required => 1,
22             );
23              
24             sub get_source_code {
25 9     9 0 71 my ( $self, $page_id ) = @_;
26 9         17 for my $source ( @{ $self->sources } ) {
  9         34  
27 16         49 my $code = $source->get_source_code( $page_id );
28 16 100       2979 return $code if defined $code;
29             }
30 1         39 return;
31             }
32              
33             sub all_page_ids {
34 0     0 0   my ( $self ) = @_;
35 0           return uniqstr( map $_->all_page_ids, @{ $self->sources } );
  0            
36             }
37              
38             1;