File Coverage

blib/lib/Salvation/TC/Meta/Type/Parameterized/HashRef.pm
Criterion Covered Total %
statement 26 26 100.0
branch 2 2 100.0
condition 2 3 66.6
subroutine 7 7 100.0
pod 2 2 100.0
total 39 40 97.5


line stmt bran cond sub pod time code
1             package Salvation::TC::Meta::Type::Parameterized::HashRef;
2              
3             =head1 NAME
4              
5             Salvation::TC::Meta::Type::Parameterized::HashRef - Класс для типа параметризованного HashRef.
6              
7             =cut
8              
9 3     3   1735 use strict;
  3         5  
  3         103  
10 3     3   12 use warnings;
  3         3  
  3         73  
11 3     3   12 use boolean;
  3         3  
  3         17  
12              
13 3     3   193 use Scalar::Util 'blessed';
  3         4  
  3         125  
14 3     3   12 use base 'Salvation::TC::Meta::Type::Parameterized';
  3         3  
  3         636  
15              
16             =head1 METHODS
17              
18             =cut
19              
20             =head2 iterate( HashRef $value, CodeRef $code )
21              
22             =cut
23              
24             sub iterate {
25              
26 29     29 1 38 my ( $self, $value, $code ) = @_;
27 29         31 my %clone = ();
28              
29 29         83 while( my ( $key, $item ) = each( %$value ) ) {
30              
31 33         28 eval { $code -> ( $item, $key, \$clone{ $key } ) };
  33         140  
32              
33 33 100       97 if( $@ ) {
34              
35 16         19 keys( %$value ); # сбрасываем итератор
36 16         43 die( $@ );
37             }
38             }
39              
40 13         36 return \%clone;
41             }
42              
43             =head2 signed_type_generator()
44              
45             =cut
46              
47             sub signed_type_generator {
48              
49 2     2 1 4 my ( $self ) = @_;
50              
51 2   66     8 return $self -> { 'signed_type_generator' } //= Salvation::TC -> get( 'HashRef' ) -> signed_type_generator();
52             }
53              
54              
55             1;
56              
57             __END__