File Coverage

blib/lib/Mojolicious/Plugin/ParamExpand.pm
Criterion Covered Total %
statement 29 29 100.0
branch 4 4 100.0
condition n/a
subroutine 7 7 100.0
pod 1 1 100.0
total 41 41 100.0


line stmt bran cond sub pod time code
1             package Mojolicious::Plugin::ParamExpand;
2              
3 2     2   4355 use Mojo::Base 'Mojolicious::Plugin';
  2         6  
  2         15  
4 2     2   1623 use CGI::Expand;
  2         2967  
  2         23  
5              
6             our $VERSION = '0.02';
7              
8             sub register
9             {
10 3     3 1 16006 my ($self, $app, $config) = @_;
11 3         6 my $class = 'Mojolicious::Plugin::ParamExpand::expander';
12              
13 3         9 _make_package($class, $config);
14              
15             $app->hook(before_dispatch => sub {
16 6     6   144429 my $c = shift;
17 6         15 my $hash;
18              
19 6         12 eval { $hash = $class->expand_hash($c->req->params->to_hash) };
  6         39  
20 6 100       5131 if($@) {
21 1         15 $c->render_exception($@);
22 1         9387 return;
23             }
24              
25 5         48 $c->param($_ => $hash->{$_}) for keys %$hash;
26 3         39 });
27             }
28              
29             sub _make_package
30             {
31 2     2   595 no strict 'refs';
  2         3  
  2         339  
32              
33 3     3   6 my ($class, $config) = @_;
34 3         4 @{"${class}::ISA"} = 'CGI::Expand';
  3         59  
35              
36 3         9 for(qw|max_array separator|) {
37 6         10 my $val = $config->{$_};
38 6 100   14   24 *{"${class}::$_"} = sub { $val } if defined $val;
  2         15  
  14         2546  
39             }
40             }
41              
42             1;
43              
44             __END__