class Elastic::Results::GroupedResult
Attributes
key_names[R]
Public Class Methods
new(_key_names, _groups)
click to toggle source
# File lib/elastic/results/grouped_result.rb, line 7 def initialize(_key_names, _groups) @key_names = _key_names.freeze @groups = _groups.to_a end
Public Instance Methods
[](_key)
click to toggle source
# File lib/elastic/results/grouped_result.rb, line 16 def [](_key) if _key.is_a? Hash mapped_results[_key] else raise ArgumentError, '' if @key_names.length > 1 mapped_results[@key_names.first => _key] end end
count()
click to toggle source
# File lib/elastic/results/grouped_result.rb, line 34 def count @groups.count end
each(&_block)
click to toggle source
# File lib/elastic/results/grouped_result.rb, line 12 def each(&_block) @groups.map { |g| group_as_pair g }.each(&_block) end
each_group(&_block)
click to toggle source
# File lib/elastic/results/grouped_result.rb, line 25 def each_group(&_block) @groups.each(&_block) end
group_at(_idx)
click to toggle source
# File lib/elastic/results/grouped_result.rb, line 38 def group_at(_idx) @groups[_idx] end
last()
click to toggle source
# File lib/elastic/results/grouped_result.rb, line 29 def last return nil if @groups.count == 0 group_as_pair @groups.last end
map_to_group(&_block)
click to toggle source
# File lib/elastic/results/grouped_result.rb, line 47 def map_to_group(&_block) self.class.new(@key_names, @groups.map do |group| Elastic::Results::ResultGroup.new group.keys, _block.call(group.as_value) end) end
traverse(&_block)
click to toggle source
Calls superclass method
Elastic::Results::Base#traverse
# File lib/elastic/results/grouped_result.rb, line 42 def traverse(&_block) super @groups.each { |h| h.traverse(&_block) } end
Private Instance Methods
group_as_pair(_group)
click to toggle source
# File lib/elastic/results/grouped_result.rb, line 55 def group_as_pair(_group) [_group.keys, _group.as_value] end
mapped_results()
click to toggle source
# File lib/elastic/results/grouped_result.rb, line 59 def mapped_results @mapped_results ||= {}.tap do |map| @groups.each do |g| map[g.keys] = g.as_value end end end