module Mongoid::Extensions::Range::ClassMethods
Public Instance Methods
demongoize(object)
click to toggle source
Convert the object from its mongo friendly ruby type to this type.
@example Demongoize the object.
Range.demongoize({ "min" => 1, "max" => 5 })
@param [ Hash
] object The object to demongoize.
@return [ Range
| nil ] The range, or nil if object cannot be represented as range.
# File lib/mongoid/extensions/range.rb, line 54 def demongoize(object) return if object.nil? if object.is_a?(Hash) hash = object.slice('min', 'max', 'exclude_end', :min, :max, :exclude_end) unless hash.blank? begin ::Range.new(hash["min"] || hash[:min], hash["max"] || hash[:max], hash["exclude_end"] || hash[:exclude_end]) rescue ArgumentError nil end end end end
mongoize(object)
click to toggle source
Turn the object from the ruby type we deal with to a Mongo friendly type.
@example Mongoize the object.
Range.mongoize(1..3)
@param [ Object
] object The object to mongoize.
@return [ Hash
| nil ] The object mongoized or nil.
# File lib/mongoid/extensions/range.rb, line 79 def mongoize(object) return if object.nil? case object when Hash then __mongoize_hash__(object) when Range then __mongoize_range__(object) end end
Private Instance Methods
__mongoize_hash__(object)
click to toggle source
# File lib/mongoid/extensions/range.rb, line 89 def __mongoize_hash__(object) hash = object.stringify_keys hash.slice!('min', 'max', 'exclude_end') hash.compact! hash.transform_values!(&:mongoize) hash.blank? ? nil : hash end
__mongoize_range__(object)
click to toggle source
# File lib/mongoid/extensions/range.rb, line 97 def __mongoize_range__(object) hash = {} hash['min'] = object.begin.mongoize if object.begin hash['max'] = object.end.mongoize if object.end if object.respond_to?(:exclude_end?) && object.exclude_end? hash['exclude_end'] = true end hash end