File Coverage

lib/Crypt/Perl/X/Base.pm
Criterion Covered Total %
statement 29 31 93.5
branch 5 6 83.3
condition 2 3 66.6
subroutine 8 9 88.8
pod 0 3 0.0
total 44 52 84.6


line stmt bran cond sub pod time code
1             package Crypt::Perl::X::Base;
2              
3 22     22   5649 use strict;
  22         148  
  22         640  
4 11     11   62 use warnings;
  11         24  
  11         270  
5              
6 11     11   59 use Carp ();
  11         27  
  11         4187  
7              
8             sub new {
9 1325     1325 0 3375 my ( $class, $string, $props_hr ) = @_;
10              
11 1325         4334 $class->_check_overload();
12              
13 1325 100       5347 my %attrs = $props_hr ? %$props_hr : ();
14              
15 1325         17035 return bless [ $string, \%attrs ], $class;
16             }
17              
18             sub get {
19 0     0 0 0 my ( $self, $attr ) = @_;
20              
21             #Do we need to clone this? Could JSON suffice, or do we need Clone?
22 0         0 return $self->[1]{$attr};
23             }
24              
25             sub to_string {
26 348     348 0 27079 my ($self) = @_;
27              
28 348         4089 return sprintf '%s: %s', ref($self), $self->[0];
29             }
30              
31             #----------------------------------------------------------------------
32              
33             my %_OVERLOADED;
34              
35             sub _check_overload {
36 1325     1325   2993 my ( $class, $str ) = @_;
37              
38             #cf. eval_bug.readme
39 1325         2275 my $eval_err = $@;
40              
41 11   66 11   93 $_OVERLOADED{$class} ||= eval qq{
  11         30  
  11         237  
  1325         5880  
42             package $class;
43             use overload (q<""> => __PACKAGE__->can('__spew'));
44             1;
45             };
46              
47             #Should never happen as long as overload.pm is available.
48 1325 50       3216 warn if !$_OVERLOADED{$class};
49              
50 1325         1995 $@ = $eval_err;
51              
52 1325         2152 return;
53             }
54              
55             sub __spew {
56 66     66   10114 my ($self) = @_;
57              
58 66         183 my $spew = $self->to_string();
59              
60 66 100       232 if ( substr( $spew, -1 ) ne "\n" ) {
61 11         148 $spew .= Carp::longmess();
62             }
63              
64 66         9454 return $spew;
65             }
66              
67             1;