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