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   3811 use strict;
  13         30  
  13         301  
4 12     12   112 use warnings;
  12         27  
  12         251  
5              
6 10     10   49 use Carp ();
  10         19  
  10         1795  
7              
8             my %_OVERLOADED;
9              
10             sub _check_overload {
11 22     22   48 my ( $class, $str ) = @_;
12              
13             #cf. eval_bug.readme
14 22         43 my $eval_err = $@;
15              
16 10   66 10   67 $_OVERLOADED{$class} ||= eval qq{
  10         22  
  10         156  
  22         1328  
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       78 die if !$_OVERLOADED{$class};
24              
25 22         41 $@ = $eval_err;
26              
27 22         51 return;
28             }
29              
30             sub __spew {
31 37     37   8087 my ($self) = @_;
32              
33 37         110 my $spew = $self->to_string();
34              
35 37 100       126 if ( substr( $spew, -1 ) ne "\n" ) {
36 35         350 $spew .= Carp::longmess();
37             }
38              
39 37         20760 return $spew;
40             }
41              
42             1;