Class: MatchReduce::Processor::ResultsBuilder
- Inherits:
-
Object
- Object
- MatchReduce::Processor::ResultsBuilder
- Defined in:
- lib/match_reduce/processor/results_builder.rb
Overview
This class knows how to group together aggregators in order to produce results.
Instance Attribute Summary collapse
-
#resolver ⇒ Object
readonly
Returns the value of attribute resolver.
Instance Method Summary collapse
- #add(aggregator, record, group_id) ⇒ Object
-
#initialize(aggregators, resolver) ⇒ ResultsBuilder
constructor
A new instance of ResultsBuilder.
- #results ⇒ Object
Constructor Details
#initialize(aggregators, resolver) ⇒ ResultsBuilder
Returns a new instance of ResultsBuilder.
18 19 20 21 22 23 24 25 |
# 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 |
Instance Attribute Details
#resolver ⇒ Object (readonly)
Returns the value of attribute resolver.
16 17 18 |
# File 'lib/match_reduce/processor/results_builder.rb', line 16 def resolver @resolver end |
Instance Method Details
#add(aggregator, record, group_id) ⇒ Object
27 28 29 |
# 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 ⇒ Object
31 32 33 |
# File 'lib/match_reduce/processor/results_builder.rb', line 31 def results result_by_name.values.map(&:result) end |