class TituloEleitoral::NumeroInscricao
Attributes
dv1[R]
dv2[R]
numero[R]
numero_original[R]
Public Class Methods
new(numero)
click to toggle source
www.tse.jus.br/legislacao/codigo-eleitoral/normas-editadas-pelo-tse/resolucao-nb0-21.538-de-14-de-outubro-de-2003-brasilia-2013-df www.exceldoseujeito.com.br/2008/12/19/validar-cpf-cnpj-e-titulo-de-eleitor-parte-ii/ cdn.tse.jus.br/saae/util/scriptsGerais.js ef3cinco.com/2011/09/07/como-validar-titulo-de-eleitor-usando-java-netbeans/
# File lib/titulo_eleitoral/numero_inscricao.rb, line 12 def initialize(numero) @numero_original = divide_em_array(numero) @numero = normaliza_quantidade_digitos(numero_original) @dv1 = primeiro_digito_verificador @dv2 = segundo_digito_verificador end
Public Instance Methods
codigo_uf()
click to toggle source
# File lib/titulo_eleitoral/numero_inscricao.rb, line 24 def codigo_uf digitos_uf if uf_valida? end
sigla_uf()
click to toggle source
# File lib/titulo_eleitoral/numero_inscricao.rb, line 28 def sigla_uf UFS[digitos_uf] if uf_valida? end
valido?()
click to toggle source
# File lib/titulo_eleitoral/numero_inscricao.rb, line 19 def valido? return false if (numero.size > NUMERO_DIGITOS) || (codigo_uf.nil?) digitos_verificadores == digitos_verificadores_calculados end
Private Instance Methods
calcula_digito_verificador(digitos, multiplicadores)
click to toggle source
# File lib/titulo_eleitoral/numero_inscricao.rb, line 45 def calcula_digito_verificador(digitos, multiplicadores) soma_multiplicacao = digitos.zip(multiplicadores).inject(0) { |resultado,(digito, multiplicador)| resultado + (digito * multiplicador) } resto_divisao = soma_multiplicacao % MODULO verifica_resto(resto_divisao) end
digitos_uf()
click to toggle source
# File lib/titulo_eleitoral/numero_inscricao.rb, line 66 def digitos_uf numero[8,2].join end
digitos_verificadores()
click to toggle source
# File lib/titulo_eleitoral/numero_inscricao.rb, line 70 def digitos_verificadores numero[10,2].join end
digitos_verificadores_calculados()
click to toggle source
# File lib/titulo_eleitoral/numero_inscricao.rb, line 79 def digitos_verificadores_calculados dv1.to_s + dv2.to_s end
divide_em_array(numero)
click to toggle source
# File lib/titulo_eleitoral/numero_inscricao.rb, line 51 def divide_em_array(numero) case when numero.is_a?(String) && !numero.empty? somente_numeros(numero).split('') when numero.is_a?(Fixnum) numero.to_s.split('') else [] end end
normaliza_quantidade_digitos(numero)
click to toggle source
# File lib/titulo_eleitoral/numero_inscricao.rb, line 62 def normaliza_quantidade_digitos(numero) (numero.join.size >= NUMERO_DIGITOS) ? numero : numero.join.rjust(NUMERO_DIGITOS, "0").split('') end
primeiro_digito_verificador()
click to toggle source
# File lib/titulo_eleitoral/numero_inscricao.rb, line 33 def primeiro_digito_verificador #Somar a multiplicação dos 8 primeiros digitos, respectivamente, por [2,3,4,5,6,7,8,9] e após calcular módulo 11 desta soma digitos = numero.take(8).map(&:to_i) calcula_digito_verificador(digitos, MULTIPLICADORES_DV1) end
segundo_digito_verificador()
click to toggle source
# File lib/titulo_eleitoral/numero_inscricao.rb, line 39 def segundo_digito_verificador #Somar a multiplicação dos digitos 9, 10 e DV1, respectivamente, por [7,8,9] e após calcular módulo 11 desta soma digitos = numero[8,2].map(&:to_i) << dv1 calcula_digito_verificador(digitos, MULTIPLICADORES_DV2) end
somente_numeros(valor)
click to toggle source
# File lib/titulo_eleitoral/numero_inscricao.rb, line 95 def somente_numeros(valor) valor.gsub(/\D/, '') end
uf_valida?()
click to toggle source
# File lib/titulo_eleitoral/numero_inscricao.rb, line 74 def uf_valida? uf = digitos_uf.to_i uf >= 1 && uf <=28 end
verifica_resto(resto_divisao)
click to toggle source
# File lib/titulo_eleitoral/numero_inscricao.rb, line 83 def verifica_resto(resto_divisao) if resto_divisao == 10 0 else if (resto_divisao == 0) && ((sigla_uf == 'SP') || (sigla_uf == 'MG')) 1 else resto_divisao end end end