Class: Elasticsearch::Model::Response::Aggregations
- Inherits:
-
HashWrapper
- Object
- Hashie::Mash
- HashWrapper
- Elasticsearch::Model::Response::Aggregations
- Defined in:
- lib/elasticsearch/model/response/aggregations.rb
Instance Method Summary collapse
-
#__redefine_enumerable_methods(h) ⇒ Object
Fix the problem of Hashie::Mash returning unexpected values for ‘min` and `max` methods.
-
#initialize(attributes = {}) ⇒ Aggregations
constructor
A new instance of Aggregations.
Constructor Details
#initialize(attributes = {}) ⇒ Aggregations
Returns a new instance of Aggregations.
25 26 27 |
# File 'lib/elasticsearch/model/response/aggregations.rb', line 25 def initialize(attributes={}) __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 |