File Coverage

blib/lib/Search/Tools/ArgNormalizer.pm
Criterion Covered Total %
statement 29 36 80.5
branch 6 10 60.0
condition 1 3 33.3
subroutine 6 6 100.0
pod 2 2 100.0
total 44 57 77.1


line stmt bran cond sub pod time code
1             package Search::Tools::ArgNormalizer;
2 21     21   8997 use Moo::Role;
  21         39  
  21         127  
3 21     21   5975 use Carp;
  21         58  
  21         987  
4 21     21   127 use Scalar::Util qw( blessed );
  21         38  
  21         864  
5 21     21   109 use Data::Dump qw( dump );
  21         32  
  21         6707  
6              
7             our $VERSION = '1.006';
8              
9             sub BUILDARGS {
10 53     53 1 79814 my $self = shift;
11 53         226 my %args = @_;
12 53         114 my $q = delete $args{query};
13 53         102 my $debug = delete $args{debug};
14 53 50       155 if ( !defined $q ) {
15 0         0 confess "query required";
16             }
17 53 100 33     366 if ( !ref($q) ) {
    50          
    50          
18 25         3478 require Search::Tools::QueryParser;
19             $args{query} = Search::Tools::QueryParser->new(
20             debug => $debug,
21 9         117 map { $_ => delete $args{$_} }
22 25         156 grep { $self->queryparser_can($_) } keys %args
  91         194  
23             )->parse($q);
24             }
25             elsif ( ref($q) eq 'ARRAY' ) {
26 0         0 carp "query ARRAY ref deprecated as of version 0.24";
27 0         0 require Search::Tools::QueryParser;
28             $args{query} = Search::Tools::QueryParser->new(
29             debug => $debug,
30 0         0 map { $_ => delete $args{$_} }
31 0         0 grep { $self->queryparser_can($_) } keys %args
  0         0  
32             )->parse( join( ' ', @$q ) );
33             }
34             elsif ( blessed($q) and $q->isa('Search::Tools::Query') ) {
35 28         58 $args{query} = $q;
36             }
37             else {
38 0         0 confess
39             "query param required to be a scalar string or Search::Tools::Query object";
40             }
41 53         695 $args{debug} = $debug; # restore so it can be passed on
42             #dump \%args;
43 53         786 return \%args;
44             }
45              
46             sub queryparser_can {
47 91     91 1 116 my $self = shift;
48 91 50       174 my $attr = shift or confess "attr required";
49 91         334 my $can = Search::Tools::QueryParser->can($attr);
50              
51             #warn
52             # sprintf( "QueryParser->can(%s)==%s\n", $attr, ( $can || '[undef]' ) );
53              
54 91         317 return $can;
55             }
56              
57             1;
58              
59             __END__