File Coverage

blib/lib/Rope/Handles/Hash.pm
Criterion Covered Total %
statement 52 52 100.0
branch 2 2 100.0
condition n/a
subroutine 16 16 100.0
pod 12 13 92.3
total 82 83 98.8


line stmt bran cond sub pod time code
1             package Rope::Handles::Hash;
2              
3 9     9   710300 use strict;
  9         14  
  9         286  
4 9     9   78 use warnings;
  9         20  
  9         473  
5 9     9   4388 use Hash::Util qw/unlock_hash lock_hash/;
  9         26493  
  9         75  
6              
7             sub new {
8 16     16 0 1051461 my $class = shift;
9 16 100       95 bless ref $_[0] ? $_[0] : {@_}, __PACKAGE__;
10             }
11              
12             sub length {
13 8     8 1 17 my ($self) = @_;
14 8         10 return scalar keys %{$self};
  8         34  
15             }
16              
17             sub get {
18 19     19 1 1051 my ($self, $key) = @_;
19 19         82 return $self->{$key};
20             }
21              
22             sub set {
23 6     6 1 18 my ($self, $key, $val) = @_;
24 6         17 $self->{$key} = $val;
25 5         16 return $self;
26             }
27              
28             sub delete {
29 2     2 1 13 my ($self, $key) = @_;
30 2         5 delete $self->{$key};
31 2         7 return $self;
32             }
33              
34             sub clear {
35 1     1 1 3 my ($self) = @_;
36 1         1 %{$self} = ();
  1         3  
37 1         2 return $self;
38             }
39              
40             sub assign {
41 4     4 1 23 my ($self, @data) = @_;
42              
43 4         10 for my $d (@data) {
44 5         12 for my $k (keys %{ $d }) {
  5         12  
45 9         23 $self->{$k} = $d->{$k};
46             }
47             }
48              
49 4         15 return $self;
50             }
51              
52             sub each {
53 3     3 1 14 my ($self, $code) = @_;
54 3         6 my @out;
55 3         4 for my $key (sort keys %{$self}) {
  3         15  
56 6         19 my $value = $self->{$key};
57 6         47 push @out, $code->($key, $value);
58             }
59 3         30 return @out;
60             }
61              
62 2     2 1 707 sub entries { goto &each; }
63              
64             sub keys {
65 2     2 1 388 my ($self) = @_;
66 2         4 return sort keys %{$self};
  2         18  
67             }
68              
69             sub values {
70 2     2 1 18 my ($self) = @_;
71 2         4 return sort values %{$self};
  2         17  
72             }
73              
74             sub freeze {
75 2     2 1 11 lock_hash(%{$_[0]});
  2         13  
76 2         61 $_[0];
77             }
78              
79             sub unfreeze {
80 2     2 1 1074 unlock_hash(%{$_[0]});
  2         14  
81 2         31 $_[0];
82             }
83              
84             1;
85              
86             __END__