File Coverage

blib/lib/Dispatcher/Small.pm
Criterion Covered Total %
statement 24 24 100.0
branch 4 4 100.0
condition 1 2 50.0
subroutine 6 6 100.0
pod 2 2 100.0
total 37 38 97.3


line stmt bran cond sub pod time code
1             package Dispatcher::Small;
2 2     2   21901 use 5.010;
  2         9  
  2         84  
3 2     2   11 use strict;
  2         5  
  2         77  
4 2     2   23 use warnings;
  2         4  
  2         450  
5              
6             our $VERSION = "0.02";
7              
8             sub new {
9 1     1 1 39 my $class = shift;
10 1         8 return bless +{ @_ }, $class;
11             }
12              
13             sub match {
14 10     10 1 515 my ($self, $env) = @_;
15 10         11 my $i = 0;
16 10         12 my ($regex, $class, @capture);
17 10   50     30 my $path = $env->{PATH_INFO} || '/';
18 10         612 my $method = $env->{REQUEST_METHOD};
19 10         43 while ($regex = $self->{$method}[$i * 2]) {
20 30 100       154 if (@capture = $path =~ $regex) {
21             return +{
22 8 100       7 %{ $self->{$method}[$i * 2 + 1] },
  8         149  
23 2     2   2040 %+ ? %+ : ( capture => [@capture] ),
  2         1380  
  2         162  
24             };
25             }
26 22         68 $i++;
27             }
28             }
29              
30             1;
31             __END__