Module: Mongoid::Criteria::Queryable::Extensions::Hash
Relationships & Source Files | |
Defined in: | lib/mongoid/criteria/queryable/extensions/hash.rb |
Overview
Adds query type-casting behavior to Hash
class.
Instance Method Summary
-
#__add__(object) ⇒ Hash
Add an object to a hash using the merge strategies.
-
#__add_from_array__(array) ⇒ Hash
Merge this hash into the provided array.
-
#__deep_copy__ ⇒ Hash
Make a deep copy of this hash.
-
#__expand_complex__ ⇒ Hash
Get the object as expanded.
-
#__intersect__(object) ⇒ Hash
Add an object to a hash using the merge strategies.
-
#__intersect_from_array__(array) ⇒ Hash
Merge this hash into the provided array.
-
#__intersect_from_object__(object) ⇒ Hash
Merge this hash into the provided object.
-
#__sort_option__ ⇒ Hash
Get the hash as a sort option.
-
#__union__(object) ⇒ Hash
Add an object to a hash using the merge strategies.
-
#__union_from_object__(object) ⇒ Hash
Merge this hash into the provided object.
-
#apply_strategy(strategy, object) ⇒ Hash
private
Internal use only
Internal use only
Apply the provided strategy for the hash with the given object.
Instance Method Details
#__add__(object) ⇒ Hash
Add an object to a hash using the merge strategies.
# File 'lib/mongoid/criteria/queryable/extensions/hash.rb', line 20
def __add__(object) apply_strategy(:__add__, object) end
#__add_from_array__(array) ⇒ Hash
Merge this hash into the provided array.
# File 'lib/mongoid/criteria/queryable/extensions/hash.rb', line 32
def __add_from_array__(array) { keys.first => array.__add__(values.first) } end
#__deep_copy__ ⇒ Hash
Make a deep copy of this hash.
# File 'lib/mongoid/criteria/queryable/extensions/hash.rb', line 102
def __deep_copy__ {}.tap do |copy| each_pair do |key, value| copy.store(key, value.__deep_copy__) end end end
#__expand_complex__ ⇒ Hash
Get the object as expanded.
# File 'lib/mongoid/criteria/queryable/extensions/hash.rb', line 130
def replacement = {} each_pair do |key, value| replacement.merge!(key.__expr_part__(value. )) end replacement end
#__intersect__(object) ⇒ Hash
Add an object to a hash using the merge strategies.
# File 'lib/mongoid/criteria/queryable/extensions/hash.rb', line 44
def __intersect__(object) apply_strategy(:__intersect__, object) end
#__intersect_from_array__(array) ⇒ Hash
Merge this hash into the provided array.
# File 'lib/mongoid/criteria/queryable/extensions/hash.rb', line 56
def __intersect_from_array__(array) { keys.first => array.__intersect__(values.first) } end
#__intersect_from_object__(object) ⇒ Hash
Merge this hash into the provided object.
# File 'lib/mongoid/criteria/queryable/extensions/hash.rb', line 68
def __intersect_from_object__(object) { keys.first => object.__intersect__(values.first) } end
#__sort_option__ ⇒ Hash
Get the hash as a sort option.
# File 'lib/mongoid/criteria/queryable/extensions/hash.rb', line 116
def __sort_option__ tap do |hash| hash.each_pair do |key, value| hash.store(key, Mongoid::Criteria::Translator.to_direction(value)) end end end
#__union__(object) ⇒ Hash
Add an object to a hash using the merge strategies.
# File 'lib/mongoid/criteria/queryable/extensions/hash.rb', line 80
def __union__(object) apply_strategy(:__union__, object) end
#__union_from_object__(object) ⇒ Hash
Merge this hash into the provided object.
# File 'lib/mongoid/criteria/queryable/extensions/hash.rb', line 92
def __union_from_object__(object) { keys.first => object.__union__(values.first) } end
#apply_strategy(strategy, object) ⇒ Hash
(private)
Apply the provided strategy for the hash with the given object.
# File 'lib/mongoid/criteria/queryable/extensions/hash.rb', line 151
def apply_strategy(strategy, object) tap do |hash| object.each_pair do |key, value| hash.store(key, hash[key].send(strategy, value)) end end end