Module: Mongoid::Matcher::Bits Private
- Included in:
- BitsAllClear, BitsAllSet, BitsAnyClear, BitsAnySet
- Defined in:
- lib/mongoid/matcher/bits.rb
This module is part of a private API. You should avoid using this module if possible, as it may be removed or be changed in the future.
Class Method Summary collapse
- .operator_name ⇒ Object private
Instance Method Summary collapse
Class Method Details
.operator_name ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
36 37 38 |
# File 'lib/mongoid/matcher/bits.rb', line 36 module_function def operator_name name.sub(/.*::/, '').sub(/\A(.)/) { |l| l.downcase } end |
Instance Method Details
#matches?(exists, value, condition) ⇒ Boolean
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
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 |
# File 'lib/mongoid/matcher/bits.rb', line 6 def matches?(exists, value, condition) case value when BSON::Binary value = value.data.split('').map { |n| '%02x' % n.ord }.join.to_i(16) end case condition when Array array_matches?(value, condition) when BSON::Binary int_cond = condition.data.split('').map { |n| '%02x' % n.ord }.join.to_i(16) int_matches?(value, int_cond) when Integer if condition < 0 raise Errors::InvalidQuery, "Invalid value for $#{operator_name} argument: negative integers are not allowed: #{condition}" end int_matches?(value, condition) when Float if (int_cond = condition.to_i).to_f == condition if int_cond < 0 raise Errors::InvalidQuery, "Invalid value for $#{operator_name} argument: negative numbers are not allowed: #{condition}" end int_matches?(value, int_cond) else raise Errors::InvalidQuery, "Invalid type for $#{operator_name} argument: not representable as an integer: #{condition}" end else raise Errors::InvalidQuery, "Invalid type for $#{operator_name} argument: #{condition}" end end |