Class: Elasticsearch::Model::Response::Aggregations

Inherits:
HashWrapper
  • Object
show all
Defined in:
lib/elasticsearch/model/response/aggregations.rb

Instance Method Summary collapse

Constructor Details

#initialize(attributes = {}, options = {}) ⇒ Aggregations

Returns a new instance of Aggregations.

 25 26 27
# File 'lib/elasticsearch/model/response/aggregations.rb', line 25 def initialize(attributes={}, options= {}) __redefine_enumerable_methods super(attributes) end

Instance Method Details

#__redefine_enumerable_methods(h) ⇒ Object

Fix the problem of Hashie::Mash returning unexpected values for ‘min` and `max` methods

People can define names for aggregations such as ‘min` and `max`, but these methods are defined in `Enumerable#min` and `Enumerable#max`

{ foo: 'bar' }.min # => [:foo, "bar"] 

Therefore, any Hashie::Mash instance value has the ‘min` and `max` methods redefined to return the real value

 40 41 42 43 44 45 46 47 48 49 50
# File 'lib/elasticsearch/model/response/aggregations.rb', line 40 def __redefine_enumerable_methods(h) if h.respond_to?(:each_pair) h.each_pair { |k, v| v = __redefine_enumerable_methods(v) } end if h.is_a?(Hashie::Mash) class << h define_method(:min) { self[:min] } define_method(:max) { self[:max] } end end end