File Coverage

blib/lib/Crypt/XkcdPassword/Words.pm
Criterion Covered Total %
statement 28 28 100.0
branch 3 4 75.0
condition n/a
subroutine 8 8 100.0
pod 0 2 0.0
total 39 42 92.8


line stmt bran cond sub pod time code
1 3     3   33100 use 5.008;
  3         34  
  3         152  
2 3     3   18 use strict;
  3         4  
  3         104  
3 3     3   13 use warnings;
  3         6  
  3         178  
4              
5             package Crypt::XkcdPassword::Words;
6              
7             BEGIN {
8 3     3   8 $Crypt::XkcdPassword::Words::EN::AUTHORITY = 'cpan:TOBYINK';
9 3         50 $Crypt::XkcdPassword::Words::EN::VERSION = '0.009';
10             }
11              
12 3     3   16 use Carp;
  3         6  
  3         232  
13 3     3   15 use Moo::Role;
  3         5  
  3         18  
14              
15             requires qw( description filehandle );
16              
17             sub cache_key
18             {
19 9     9 0 23 ref(shift);
20             }
21              
22             my %cache;
23             sub words
24             {
25 9     9 0 2762 my $self = shift;
26            
27 9         28 my $key = $self->cache_key;
28 9         38 my $fh = $self->filehandle;
29            
30 9 100       66 unless ($cache{$key})
31             {
32 4         9 my @words;
33 4         27 while (<$fh>)
34             {
35 78850         83167 chomp;
36 78850 50       280839 push @words, $_ if length;
37             }
38 4         31 $cache{$key} = \@words;
39             }
40            
41 9         62 $cache{$key};
42             }
43              
44             __PACKAGE__