Class: MatchReduce::Processor::ResultBuilder
- Inherits:
-
Object
- Object
- MatchReduce::Processor::ResultBuilder
- Defined in:
- lib/match_reduce/processor/result_builder.rb
Overview
This class understands how to take an aggregator and derive a result for it.
Instance Method Summary collapse
- #add(record, group_id) ⇒ Object
-
#initialize(aggregator, resolver) ⇒ ResultBuilder
constructor
A new instance of ResultBuilder.
- #result ⇒ Object
Constructor Details
#initialize(aggregator, resolver) ⇒ ResultBuilder
Returns a new instance of ResultBuilder.
16 17 18 19 20 21 22 23 24 25 26 |
# 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 |
Instance Method Details
#add(record, group_id) ⇒ Object
28 29 30 31 32 33 34 35 36 37 38 39 40 |
# 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 ⇒ Object
42 43 44 |
# File 'lib/match_reduce/processor/result_builder.rb', line 42 def result Result.new(aggregator.name, records, value) end |