File Coverage

blib/lib/DBIx/ParseException.pm
Criterion Covered Total %
statement 25 33 75.7
branch 4 10 40.0
condition 2 6 33.3
subroutine 7 8 87.5
pod 0 2 0.0
total 38 59 64.4


line stmt bran cond sub pod time code
1             package DBIx::ParseException;
2             BEGIN {
3 4     4   335913 $DBIx::ParseException::VERSION = '0.001000_03';
4             }
5              
6 4     4   37 use strict;
  4         7  
  4         137  
7 4     4   22 use warnings;
  4         8  
  4         138  
8 4     4   3101 use DBI;
  4         22793  
  4         197  
9 4     4   27 use Carp 'croak';
  4         8  
  4         1764  
10              
11             sub _get_driver {
12 2     2   3 return do {
13 2 100       7 if (my $dbh = $_[1]->{dbh}) {
14 1         35 $dbh->{Driver}{Name};
15             } else {
16 1         10 ( DBI->parse_dsn($_[1]->{dsn}) )[1];
17             }
18             }
19             }
20              
21             DRIVERS: {
22             my %DRIVERS;
23              
24             sub handler {
25 2     2 0 21694 my $self = shift;
26 2 50       11 my $params = shift or croak 'params are required for DBIx::ParseException!';
27 2         7 my $driver = $self->_get_driver($params);
28 2   66     37 return $DRIVERS{$driver} ||= do {
29 1         5 my $parser = __PACKAGE__ . "::$driver";
30 1         114 eval "require $parser";
31 1 50       7 die $@ if $@;
32 1         16 $parser->can('error_handler');
33             };
34             }
35             }
36              
37             CAPABILITIES: {
38             my %CAPABILITIES;
39              
40             sub capabilities {
41 0     0 0   my $self = shift;
42 0 0         my $params = shift or croak 'params are required for DBIx::ParseException!';
43 0           my $driver = $self->_get_driver($params);
44 0   0       return $CAPABILITIES{$driver} ||= do {
45 0           my $parser = __PACKAGE__ . "::$driver";
46 0           eval "require $parser";
47 0 0         die $@ if $@;
48 0           $parser->can('capabilities')->($parser);
49             };
50             }
51             }
52              
53             1;
54              
55             # vim: ts=2 tw=2 expandtab
56              
57             __END__