File Coverage

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


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