File Coverage

blib/lib/Search/GIN/Keys/Expand.pm
Criterion Covered Total %
statement 34 34 100.0
branch 3 4 75.0
condition 1 3 33.3
subroutine 11 11 100.0
pod 0 6 0.0
total 49 58 84.4


line stmt bran cond sub pod time code
1 4     4   1889 use strict;
  4         7  
  4         192  
2 4     4   16 use warnings;
  4         4  
  4         174  
3             package Search::GIN::Keys::Expand;
4              
5             our $VERSION = '0.11';
6              
7 4     4   15 use Moose::Role;
  4         5  
  4         24  
8 4     4   17292 use Carp qw(croak);
  4         10  
  4         270  
9 4     4   21 use namespace::autoclean;
  4         62  
  4         27  
10              
11             sub expand_keys {
12 23     23 0 51 my ( $self, @keys ) = @_;
13 23         39 return map { $self->expand_key($_) } @keys;
  24         48  
14             }
15              
16             sub expand_key {
17 82     82 0 112 my ( $self, $value, %args ) = @_;
18              
19 82 100       186 return $self->expand_key_string($value) if not ref $value;
20              
21 39         112 my $method = "expand_keys_" . lc ref($value);
22              
23 39 50 33     258 croak("Don't know how to expand $value in key") if $method =~ /::/ or not $self->can($method);
24              
25 39         92 return $self->$method($value);
26             }
27              
28             sub expand_key_prepend {
29 33     33 0 47 my ( $self, $prefix, @keys ) = @_;
30 33         52 return map { [ $prefix, @$_ ] } @keys;
  42         166  
31             }
32              
33             sub expand_key_string {
34 43     43 0 46 my ( $self, $str ) = @_;
35 43         148 return [ $str ];
36             }
37              
38             sub expand_keys_array {
39 18     18 0 26 my ( $self, $array ) = @_;
40 18         35 return map { $self->expand_key($_) } @$array;
  25         48  
41             }
42              
43             sub expand_keys_hash {
44 21     21 0 27 my ( $self, $hash ) = @_;
45              
46 33         71 return map {
47 21         64 $self->expand_key_prepend(
48             $_,
49             $self->expand_key($hash->{$_})
50             );
51             } keys %$hash;
52             }
53              
54             1;