class MatchReduce::Processor::ResultsBuilder

This class knows how to group together aggregators in order to produce results.

Attributes

resolver[R]
result_by_name[R]

Public Class Methods

new(aggregators, resolver) click to toggle source
# File lib/match_reduce/processor/results_builder.rb, line 18
def initialize(aggregators, resolver)
  raise ArgumentError, 'aggregators are required' unless aggregators

  @result_by_name = aggregators.map { |a| [a.name, ResultBuilder.new(a, resolver)] }.to_h
  @resolver       = resolver

  freeze
end

Public Instance Methods

add(aggregator, record, group_id) click to toggle source
# File lib/match_reduce/processor/results_builder.rb, line 27
def add(aggregator, record, group_id)
  tap { result_by_name[aggregator.name].add(record, group_id) }
end
results() click to toggle source
# File lib/match_reduce/processor/results_builder.rb, line 31
def results
  result_by_name.values.map(&:result)
end