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

Incluído em:
BitsAllClear, BitsAllSet, BitsAnyClear, BitsAnySet
Definido em:
lib/mongoid/matcher/bits.rb

Visão geral

Este módulo faz parte de uma API privada. Você deve evitar usar este módulo, se possível, pois ele pode ser removido ou alterado no futuro.

Módulo Mixin incluído em correspondedores de expressão bitwise.

Recolhimento do Resumo do método de classe

Recolhimento do Resumo do método de instância

Detalhes do método de classe

.operator_namestring

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Retorna o nome do operador de expressão .

Retorna:

  • (string)

    O nome do operador.



55
56
57
# Arquivo 'lib/mongoid/matcher/bits.rb', linha 55

module_function def operator_name
  name.sub(/.*::/, '').sub(/\A(.)/) { |l| l.downcase }
end

Detalhes do método de instância

#correspondências?(existe, valor, condição) ➤ verdadeiro | false

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Retorna se um valor satisfaz uma expressão bitwise.

Parâmetros:

  • existe (verdadeiro | falso)

    Não usado.

  • valor (Objeto)

    O valor a ser verificado.

  • Condição (Numeric | Array<Numeric>)

    O predicado da expressão como uma máscara de bits ou lista de posições.

Retorna:

  • (verdadeiro | falso)

    Se o valor corresponde.



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
# Arquivo 'lib/mongoid/matcher/bits.rb', linha 20

def correspondências?(existe, valor, Condição)
  caso valor
  quando BSON::Binário
    valor = valor.de dados.dividir('').map { |n| '%02x' % n.ord }.juntar.to_i(16)
  end
  caso Condição
  quando Array
    array_matches?(valor, Condição)
  quando BSON::Binário
    int_cond = Condição.de dados.dividir('').map { |n| '%02x' % n.ord }.juntar.to_i(16)
    int_matches?(valor, int_cond)
  quando Inteiro
    se Condição < 0
      aumentar Errors::Query inválida, "Valor inválido para $#{operator_name} argumento: números inteiros negativos não são permitidos: #{condição}"
    end
    int_matches?(valor, Condição)
  quando Float
    se (int_cond = Condição.to_i).to_f == Condição
      se int_cond < 0
        aumentar Errors::Query inválida, "Valor inválido para $#{operator_name} argumento: números negativos não são permitidos: #{conditions}"
      end
      int_matches?(valor, int_cond)
    mais
      aumentar Errors::Query inválida, "Tipo inválido para $#{operator_name} argumento: não representável como um número inteiro: #{condição}"
    end
  mais
    aumentar Errors::Query inválida, "Tipo inválido para argumento de $#{operator_name} : #{condição}"
  end
end