File Coverage

blib/lib/Bubblegum/Wrapper/Digest.pm
Criterion Covered Total %
statement 4 6 66.6
branch n/a
condition n/a
subroutine 2 2 100.0
pod n/a
total 6 8 75.0


line stmt bran cond sub pod time code
1             # ABSTRACT: Bubblegum Wrapper around Hashing Algorithms
2             package Bubblegum::Wrapper::Digest;
3              
4 1     1   1109 use 5.10.0;
  1         3  
  1         55  
5 1     1   480 use Bubblegum::Class;
  0            
  0            
6              
7             use Digest::MD5 ();
8             use Digest::SHA ();
9              
10             use Bubblegum::Exception;
11              
12             extends 'Bubblegum::Object::Instance';
13              
14             our $VERSION = '0.44'; # VERSION
15              
16             sub BUILD {
17             my $self = shift;
18             $self->data->typeof('str')
19             or Bubblegum::Exception->throw(
20             verbose => 1,
21             message => ref($self)->format(
22             'Wrapper package "%s" requires string data'
23             ),
24             );
25             }
26              
27             sub encode {
28             my $self = shift;
29             my $type = shift // 'md5_hex';
30              
31             my $encoder;
32             my $md5 = [qw(md5 md5_hex)];
33             my $sha = [qw(sha1_base64 sha1 sha1_hex)];
34             my $hmc = [qw(hmac_sha1 hmac_sha1_hex)];
35              
36             $encoder = 'Digest::MD5' if $md5->one('$a eq $b', $type);
37             $encoder = 'Digest::SHA' if $sha->one('$a eq $b', $type);
38             $encoder = 'Digest::SHA' if $hmc->one('$a eq $b', $type);
39              
40             return undef unless $encoder;
41             return $encoder->can($type)->($self->data);
42             }
43              
44             1;
45              
46             __END__