Módulo: Mongoid::Matcher::Bits Private

Incluido en:
BitsAllClear, BitsAllSet, BitsAnyClear, BitsAnySet
Definido en:
lib/mongoid/matcher/bits.rb

Overview

Este módulo forma parte de una API privada. Debe evitar su uso siempre que sea posible, ya que podría eliminarse o modificarse en el futuro.

Módulo mixin incluido en los comparadores de expresiones bit a bit.

Resumen del método de clase colapsar

Resumen del método de instancia colapsar

Detalles del método de clase

.nombre_del_operadorCadena

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Devuelve el nombre del operador de expresión.

Devuelve:

  • (string)

    El nombre del operador.



55
56
57
# Archivo 'lib/mongoid/matcher/bits.rb', línea 55

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 forma parte de una API privada. Debe evitarlo 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.

Parámetros:

  • exists (true | false)

    No se utiliza.

  • Valor (objeto)

    El valor a comprobar.

  • condición (Numérico |<Numeric> arreglo<Numérico>)

    El predicado de expresión como una máscara de bits o una lista de posiciones.

Devuelve:

  • (true | false)

    Si el valor coincide.



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
# Archivo 'lib/mongoid/matcher/bits.rb', línea 20

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_coincide?(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_coincide?(Valor, condición)
  Cuando Float
    si (int_cond = condición.to_i).to_f == 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_coincide?(Valor, int_cond)
    else
      propagar Errors::Consulta no válida, "Tipono válido para el argumento $ #{operator_name}: no se puede representar como un entero: #{condition }"
    end
  else
    propagar Errors::Consulta no válida, "Tipono válido para el argumento $ #{operator_name}: #{condition }"
  end
end