File Coverage

blib/lib/DTL/Fast/Replacer/Replacement.pm
Criterion Covered Total %
statement 29 29 100.0
branch 2 2 100.0
condition 2 3 66.6
subroutine 6 6 100.0
pod 0 3 0.0
total 39 43 90.7


line stmt bran cond sub pod time code
1             package DTL::Fast::Replacer::Replacement;
2 98     98   328 use strict; use utf8; use warnings FATAL => 'all';
  98     98   96  
  98     98   2087  
  98         291  
  98         111  
  98         504  
  98         1882  
  98         1041  
  98         20328  
3              
4             sub new
5             {
6 713     713 0 776 my $proto = shift;
7 713         718 my $expression = shift;
8            
9 713         654 my $blocksep = '';
10 713         678 my $block_num = 0;
11 713   66     1750 while( not $blocksep or $expression =~ /$blocksep/ )
12             {
13 713         6624 $blocksep = sprintf '_BL_%s_', $block_num++;
14             }
15              
16 713         2733 my $self = bless {
17             'block_counter' => 0
18             , 'block_ph' => $blocksep.'%s_'
19             , 'blocks' => {}
20             }, $proto;
21            
22 713         2560 return $self;
23             }
24              
25             sub add_replacement
26             {
27 225     225 0 257 my $self = shift;
28 225         208 my $value = shift;
29            
30 225         752 my $key = sprintf $self->{'block_ph'}, $self->{'block_counter'}++;
31 225         367 $self->{'blocks'}->{$key} = $value;
32            
33 225         885 return $key;
34             }
35              
36             sub get_replacement
37             {
38 2088     2088 0 1698 my $self = shift;
39 2088         1683 my $key = shift;
40 2088         1490 my $value = undef;
41            
42 2088 100       3439 if( exists $self->{'blocks'}->{$key} )
43             {
44 223         264 $value = $self->{'blocks'}->{$key};
45 223         360 delete $self->{'blocks'}->{$key};
46             }
47            
48 2088         8126 return $value;
49             }
50              
51              
52              
53             1;