class MatchReduce::Processor::ResultBuilder
This class understands how to take an aggregator and derive a result for it.
Attributes
aggregator[R]
group_ids[R]
records[R]
resolver[R]
value[R]
Public Class Methods
new(aggregator, resolver)
click to toggle source
# File lib/match_reduce/processor/result_builder.rb, line 16 def initialize(aggregator, resolver) raise ArgumentError, 'aggregator is required' unless aggregator raise ArgumentError, 'resolver is required' unless resolver @aggregator = aggregator @resolver = resolver @records = [] @value = nil @group_ids = Set.new end
Public Instance Methods
add(record, group_id)
click to toggle source
# File lib/match_reduce/processor/result_builder.rb, line 28 def add(record, group_id) if aggregator.grouped? return self if group_ids.include?(group_id) group_ids << group_id end records << record @value = aggregator.reduce(value, record, resolver) self end
result()
click to toggle source
# File lib/match_reduce/processor/result_builder.rb, line 42 def result Result.new(aggregator.name, records, value) end