Módulo: Mongoid::Matcher::Bits Privado
- Incluido en:
- BitsAllClear, BitsAllSet, BitsAnyClear, BitsAnySet
- Definido en:
- lib/mongoid/matcher/bits.rb
Overview
Este módulo es parte de una API privada. Deberías evitar usar este módulo si es posible, ya que puede ser removido o cambiado en el futuro.
Módulo mixin incluido en los comparadores de expresiones bit a bit.
Resumen del método de clase colapsar
-
.operator_name ⇒ String
privado
Devuelve el nombre del operador de expresión.
Resumen del método de instancia colapsar
-
#matches?(_exists, value, condition) ⇒ true | false
privado
Devuelve si un valor cumple con una expresión bit a bit.
Detalles del método de clase
.operator_name ⇒ String
Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.
Devuelve el nombre del operador de expresión.
60 61 62 |
# Archivo 'lib/mongoid/matcher/bits.rb', línea 60 module_function def operator_name Nombre.sub(/.*::/, '').sub(/\A(.)/) { |l| l.minúscula } end |
Detalles del método de instancia
#matches?(_exists, value, condition) ⇒ true | false
Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.
Devuelve si un valor cumple con una expresión bit a bit.
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 42 43 44 45 46 47 48 49 50 51 52 53 |
# Archivo 'lib/mongoid/matcher/bits.rb', línea 17 def coincide?(_exists, Valor, condición) caso Valor cuando BSON::Binario Valor = Valor.Datos.división('').map { |n| '%02x' % n.ord }.unirse.to_i(16) end caso condición cuando Arreglo array_matches?(Valor, condición) cuando BSON::Binario int_cond = condición.Datos.división('').map { |n| '%02x' % n.ord }.unirse.to_i(16) int_matches?(Valor, int_cond) cuando entero si condición < 0 propagar Errors::Consulta no válida, "Valor inválido para $#{operator_name} argumento: no se permiten enteros negativos: #{condition}" end int_matches?(Valor, condición) cuando Float # Permitir que los float sean enteros (por ejemplo, 50.0), pero rechace aquellos # con una parte fraccionaria (por ejemplo, 50.1) ya que las operaciones a nivel de bit requieren enteros. int_cond = condición.to_i si int_cond == condición si int_cond < 0 propagar Errors::Consulta no válida, "Valor inválido para $#{operator_name} argumento: no se permiten números negativos: #{condition}" end int_matches?(Valor, int_cond) else propagar Errors::Consulta no válida, "Tipo no válido para $#{operator_name} argumento: no representable como un entero: #{condition}" end else propagar Errors::Consulta no válida, "Tipo no válido para $#{operator_name} argumento: #{condition}" end end |