File Coverage

blib/lib/Data/WeakMap/Key/Tie.pm
Criterion Covered Total %
statement 19 19 100.0
branch n/a
condition n/a
subroutine 7 7 100.0
pod n/a
total 26 26 100.0


line stmt bran cond sub pod time code
1             package Data::WeakMap::Key::Tie;
2 1     1   19 use 5.014;
  1         4  
3 1     1   5 use warnings FATAL => 'all';
  1         2  
  1         34  
4              
5 1     1   6 use Scalar::Util 'weaken';
  1         2  
  1         43  
6 1     1   6 use Carp 'croak';
  1         2  
  1         226  
7              
8             our $VERSION = "v0.0.3";
9              
10             sub TIESCALAR {
11 231     231   423 my ($class, $weakmap, $key) = @_;
12              
13 231         722 my $self = { weakmap => $weakmap, prop => "$key", key => $key };
14 231         817 weaken($self->{$_}) foreach qw/ weakmap key /;
15              
16 231         640 bless $self, $class;
17             }
18              
19             sub FETCH {
20 339     339   506 my ($self) = @_;
21              
22 339         1077 return $self->{key};
23             }
24              
25             sub STORE {
26 225     225   4574 my ($self) = @_;
27              
28 225         633 delete $self->{weakmap}{$self->{prop}};
29             }
30              
31             1;