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.

Colapso delresumen del método de clase

Colapso del resumen del método de instancia

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:

  • (Cadena) -

    El nombre del operador.



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

module_function def nombre_del_operador
  Nombre.sub(/.*::/, '').sub(/\A(.)/) { |l| l.mayúsculas y minúsculas }
end

Detalles del método de instancia

#coincidencias?(existe, valor, condición) ⇒ verdadero | falso

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 satisface una expresión bit a bit.

Parámetros:

  • exists (verdadero | falso)

    No se utiliza.

  • valor (Objeto) -

    El valor a comprobar.

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

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

Devuelve:

  • (verdadero | falso)

    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 ¿partidos?(exists, valor, condición)
  caso valor
  Cuando BSON::Binario
    valor = valor.datos.división('').map { |n| '%02x' % n.orden }.Join.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.orden }.Join.to_i(16)
    int_coincide?(valor, int_cond)
  Cuando entero
    Si condición < 0
      propagar Errors::Consulta no válida, "Valor no válido para el argumento $ #{operator_name}: no se permiten números 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 no válido para el argumento $#{operator_name}: 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