File Coverage

blib/lib/Net/ACME/X/OverloadBase.pm
Criterion Covered Total %
statement 23 23 100.0
branch 3 4 75.0
condition 2 3 66.6
subroutine 6 6 100.0
pod n/a
total 34 36 94.4


line stmt bran cond sub pod time code
1             package Net::ACME::X::OverloadBase;
2              
3 13     13   3104 use strict;
  13         17  
  13         259  
4 12     12   39 use warnings;
  12         16  
  12         199  
5              
6 10     10   32 use Carp ();
  10         11  
  10         1250  
7              
8             my %_OVERLOADED;
9              
10             sub _check_overload {
11 22     22   34 my ( $class, $str ) = @_;
12              
13             #cf. eval_bug.readme
14 22         27 my $eval_err = $@;
15              
16 10   66 10   39 $_OVERLOADED{$class} ||= eval qq{
  10         13  
  10         154  
  22         1114  
17             package $class;
18             use overload (q<""> => __PACKAGE__->can('__spew'));
19             1;
20             };
21              
22             #Should never happen as long as overload.pm is available.
23 22 50       56 die if !$_OVERLOADED{$class};
24              
25 22         22 $@ = $eval_err;
26              
27 22         38 return;
28             }
29              
30             sub __spew {
31 37     37   6211 my ($self) = @_;
32              
33 37         83 my $spew = $self->to_string();
34              
35 37 100       96 if ( substr( $spew, -1 ) ne "\n" ) {
36 35         277 $spew .= Carp::longmess();
37             }
38              
39 37         15264 return $spew;
40             }
41              
42             1;