App-RecordStream
view release on metacpan or search on metacpan
lib/App/RecordStream/Aggregator.pm view on Meta::CPAN
my %ret;
for my $input (@_)
{
my $spec = $input;
my $name;
if($spec =~ /^(.*)=(.*)$/)
{
$name = $1;
$spec = $2;
}
if(!defined($name))
{
my @spec = split(/,/, $spec);
$name = join("_", map { my $n = $_; $n =~ s!/!_!; $n } @spec);
}
$ret{$name} = $registry_class->parse_single_nameless_implementation($spec);
}
return \%ret;
}
sub map_initial
{
my ($aggrs) = @_;
my %ret;
for my $name (keys(%$aggrs))
{
$ret{$name} = $aggrs->{$name}->initial();
}
return \%ret;
}
sub map_combine
{
my ($aggrs, $cookies, $record) = @_;
my %ret;
for my $name (keys(%$aggrs))
{
$ret{$name} = $aggrs->{$name}->combine($cookies->{$name}, $record);
}
return \%ret;
}
sub map_squish
{
my ($aggrs, $cookies) = @_;
my $return_record = App::RecordStream::Record->new();
for my $name (keys(%$aggrs))
{
my $aggregator = $aggrs->{$name};
my $value = $aggregator->squish($cookies->{$name});
${$return_record->guess_key_from_spec($name)} = $value;
}
return $return_record;
}
sub typename
{
return "aggregator";
}
1;
( run in 1.467 second using v1.01-cache-2.11-cpan-39bf76dae61 )