Class: Plucky::Normalizers::CriteriaHashValue
- Inherits:
-
Object
- Object
- Plucky::Normalizers::CriteriaHashValue
- Defined in:
- lib/toughguy/ext.rb
Instance Method Summary collapse
-
#call(parent_key, key, value) ⇒ Object
add support for specifying ranges.
Instance Method Details
#call(parent_key, key, value) ⇒ Object
add support for specifying ranges
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/toughguy/ext.rb', line 3 def call(parent_key, key, value) case value when Array, Set if object_id?(parent_key) value = value.map { |v| to_object_id(v) } end if nesting_operator?(key) value.map { |v| criteria_hash_class.new(v, ).to_hash } elsif parent_key == key && !modifier?(key) && !value.empty? # we're not nested and not the value for a symbol operator {:$in => value.to_a} else # we are a value for a symbol operator or nested hash value.to_a end when Time value.utc when String if object_id?(key) return to_object_id(value) end value when Range v1 = value.begin; v2 = value.end if (parent_key == :_id) && v1.is_a?(Time) && v2.is_a?(Time) v1 = BSON::ObjectId.from_time(v1) v2 = BSON::ObjectId.from_time(v2) end {'$gte' => v1, (value.exclude_end? ? '$lt' : '$lte') => v2} when Hash value.each { |k, v| value[k] = call(key, k, v) } value when Regexp Regexp.new(value) else value end end |