| line | stmt | bran | cond | sub | pod | time | code | 
| 1 |  |  |  |  |  |  | package App::RecordStream::Aggregator; | 
| 2 |  |  |  |  |  |  |  | 
| 3 |  |  |  |  |  |  | our $VERSION = "4.0.23"; | 
| 4 |  |  |  |  |  |  |  | 
| 5 | 27 |  |  | 27 |  | 44140 | use strict; | 
|  | 27 |  |  |  |  | 57 |  | 
|  | 27 |  |  |  |  | 907 |  | 
| 6 | 27 |  |  | 27 |  | 122 | use warnings; | 
|  | 27 |  |  |  |  | 64 |  | 
|  | 27 |  |  |  |  | 592 |  | 
| 7 |  |  |  |  |  |  |  | 
| 8 | 27 |  |  | 27 |  | 5254 | use App::RecordStream::BaseRegistry; | 
|  | 27 |  |  |  |  | 68 |  | 
|  | 27 |  |  |  |  | 624 |  | 
| 9 | 27 |  |  | 27 |  | 167 | use App::RecordStream::Site; | 
|  | 27 |  |  |  |  | 65 |  | 
|  | 27 |  |  |  |  | 593 |  | 
| 10 |  |  |  |  |  |  |  | 
| 11 | 27 |  |  | 27 |  | 138 | use base ('App::RecordStream::BaseRegistry'); | 
|  | 27 |  |  |  |  | 60 |  | 
|  | 27 |  |  |  |  | 10497 |  | 
| 12 |  |  |  |  |  |  |  | 
| 13 |  |  |  |  |  |  | sub make_aggregators | 
| 14 |  |  |  |  |  |  | { | 
| 15 | 18 |  |  | 18 | 0 | 48169 | my $registry_class = shift; | 
| 16 |  |  |  |  |  |  |  | 
| 17 | 18 |  |  |  |  | 41 | my %ret; | 
| 18 |  |  |  |  |  |  |  | 
| 19 | 18 |  |  |  |  | 51 | for my $input (@_) | 
| 20 |  |  |  |  |  |  | { | 
| 21 | 22 |  |  |  |  | 53 | my $spec = $input; | 
| 22 | 22 |  |  |  |  | 37 | my $name; | 
| 23 |  |  |  |  |  |  |  | 
| 24 | 22 | 100 |  |  |  | 92 | if($spec =~ /^(.*)=(.*)$/) | 
| 25 |  |  |  |  |  |  | { | 
| 26 | 3 |  |  |  |  | 8 | $name = $1; | 
| 27 | 3 |  |  |  |  | 6 | $spec = $2; | 
| 28 |  |  |  |  |  |  | } | 
| 29 |  |  |  |  |  |  |  | 
| 30 | 22 | 100 |  |  |  | 67 | if(!defined($name)) | 
| 31 |  |  |  |  |  |  | { | 
| 32 | 19 |  |  |  |  | 80 | my @spec = split(/,/, $spec); | 
| 33 | 19 |  |  |  |  | 53 | $name = join("_", map { my $n = $_; $n =~ s!/!_!; $n } @spec); | 
|  | 23 |  |  |  |  | 40 |  | 
|  | 23 |  |  |  |  | 55 |  | 
|  | 23 |  |  |  |  | 81 |  | 
| 34 |  |  |  |  |  |  | } | 
| 35 |  |  |  |  |  |  |  | 
| 36 | 22 |  |  |  |  | 123 | $ret{$name} = $registry_class->parse_single_nameless_implementation($spec); | 
| 37 |  |  |  |  |  |  | } | 
| 38 |  |  |  |  |  |  |  | 
| 39 | 18 |  |  |  |  | 59 | return \%ret; | 
| 40 |  |  |  |  |  |  | } | 
| 41 |  |  |  |  |  |  |  | 
| 42 |  |  |  |  |  |  | sub map_initial | 
| 43 |  |  |  |  |  |  | { | 
| 44 | 71 |  |  | 71 | 0 | 134 | my ($aggrs) = @_; | 
| 45 |  |  |  |  |  |  |  | 
| 46 | 71 |  |  |  |  | 115 | my %ret; | 
| 47 | 71 |  |  |  |  | 168 | for my $name (keys(%$aggrs)) | 
| 48 |  |  |  |  |  |  | { | 
| 49 | 87 |  |  |  |  | 302 | $ret{$name} = $aggrs->{$name}->initial(); | 
| 50 |  |  |  |  |  |  | } | 
| 51 |  |  |  |  |  |  |  | 
| 52 | 71 |  |  |  |  | 655 | return \%ret; | 
| 53 |  |  |  |  |  |  | } | 
| 54 |  |  |  |  |  |  |  | 
| 55 |  |  |  |  |  |  | sub map_combine | 
| 56 |  |  |  |  |  |  | { | 
| 57 | 149 |  |  | 149 | 0 | 295 | my ($aggrs, $cookies, $record) = @_; | 
| 58 |  |  |  |  |  |  |  | 
| 59 | 149 |  |  |  |  | 239 | my %ret; | 
| 60 | 149 |  |  |  |  | 310 | for my $name (keys(%$aggrs)) | 
| 61 |  |  |  |  |  |  | { | 
| 62 | 197 |  |  |  |  | 576 | $ret{$name} = $aggrs->{$name}->combine($cookies->{$name}, $record); | 
| 63 |  |  |  |  |  |  | } | 
| 64 |  |  |  |  |  |  |  | 
| 65 | 149 |  |  |  |  | 408 | return \%ret; | 
| 66 |  |  |  |  |  |  | } | 
| 67 |  |  |  |  |  |  |  | 
| 68 |  |  |  |  |  |  | sub map_squish | 
| 69 |  |  |  |  |  |  | { | 
| 70 | 74 |  |  | 74 | 0 | 154 | my ($aggrs, $cookies) = @_; | 
| 71 |  |  |  |  |  |  |  | 
| 72 | 74 |  |  |  |  | 234 | my $return_record = App::RecordStream::Record->new(); | 
| 73 | 74 |  |  |  |  | 165 | for my $name (keys(%$aggrs)) | 
| 74 |  |  |  |  |  |  | { | 
| 75 | 90 |  |  |  |  | 157 | my $aggregator = $aggrs->{$name}; | 
| 76 | 90 |  |  |  |  | 300 | my $value = $aggregator->squish($cookies->{$name}); | 
| 77 | 90 |  |  |  |  | 144 | ${$return_record->guess_key_from_spec($name)} = $value; | 
|  | 90 |  |  |  |  | 224 |  | 
| 78 |  |  |  |  |  |  | } | 
| 79 |  |  |  |  |  |  |  | 
| 80 | 74 |  |  |  |  | 351 | return $return_record; | 
| 81 |  |  |  |  |  |  | } | 
| 82 |  |  |  |  |  |  |  | 
| 83 |  |  |  |  |  |  | sub typename | 
| 84 |  |  |  |  |  |  | { | 
| 85 | 19 |  |  | 19 | 0 | 51 | return "aggregator"; | 
| 86 |  |  |  |  |  |  | } | 
| 87 |  |  |  |  |  |  |  | 
| 88 |  |  |  |  |  |  | 1; |