File Coverage

blib/lib/String/Normal/Config.pm
Criterion Covered Total %
statement 59 59 100.0
branch 8 8 100.0
condition n/a
subroutine 15 15 100.0
pod n/a
total 82 82 100.0


line stmt bran cond sub pod time code
1             package String::Normal::Config;
2 9     9   33 use strict;
  9         9  
  9         195  
3 9     9   62 use warnings;
  9         9  
  9         191  
4              
5 9     9   3583 use String::Normal::Config::BusinessStem;
  9         13  
  9         182  
6 9     9   2971 use String::Normal::Config::BusinessStop;
  9         13  
  9         187  
7 9     9   3070 use String::Normal::Config::BusinessCompress;
  9         15  
  9         175  
8 9     9   3224 use String::Normal::Config::AddressStem;
  9         17  
  9         172  
9 9     9   2940 use String::Normal::Config::AddressStop;
  9         10  
  9         223  
10 9     9   3257 use String::Normal::Config::States;
  9         12  
  9         230  
11 9     9   3032 use String::Normal::Config::AreaCodes;
  9         12  
  9         166  
12 9     9   2881 use String::Normal::Config::TitleStem;
  9         14  
  9         171  
13 9     9   2977 use String::Normal::Config::TitleStop;
  9         12  
  9         2428  
14              
15             sub _slurp {
16 14     14   21 my $fh = shift;
17 14         26 my @data = ();
18 14 100       1306 chomp( @data = map { $_ || () } map { split /\s+/, $_, 2 } <$fh> );
  7516         11455  
  3758         5195  
19 14         617 close $fh;
20 14         2115 return @data;
21             }
22              
23             sub _expand_ranges {
24 3     3   7 my @expanded = ();
25              
26 3         8 for my $line (@_) {
27 625         664 my @ranges = map { /(\w)-?(\w)/;[$1..$2] } $line =~ /\[(\w-?\w)+\]/g;
  32         52  
  32         215  
28 625         507 $line =~ s/\[.*//;
29 625         631 _expand( \my @results, $line, @ranges );
30 625         867 push @expanded, @results;
31             }
32              
33 3         215 return @expanded;
34             }
35              
36             sub _expand {
37 1133     1133   929 my ($results,$str,$car,@cdr) = @_;
38              
39 1133 100       1467 if (ref $car ne 'ARRAY') {
40 1101         876 push @$results, $str;
41 1101         1189 return;
42             }
43              
44 32         43 for (@$car) {
45 508         646 _expand( $results, $str . $_, @cdr );
46             };
47             }
48              
49             sub _attach {
50 3338     3338   3031 my ($t, $car, @cdr) = @_;
51 3338 100       5611 return unless defined $car;
52 2237 100       3697 $t->{$car} = {} unless ref $t->{$car};
53 2237         2404 _attach( $t->{$car}, @cdr );
54             }
55              
56             1;
57              
58             __END__