class TituloEleitorUtils::TituloEleitor

Attributes

numbers[R]

Acessor de leitura para os números

Public Class Methods

new(numbers) click to toggle source

Inicializador da classe

# File lib/titulo_eleitor_utils/titulo_eleitor.rb, line 8
def initialize(numbers)
  if numbers.is_a? String
    numbers = numbers.split('')
  elsif numbers.is_a? Integer
    numbers = numbers.to_s.split('')
  end

  @numbers = numbers
end
valid_state?(titulo_eleitor_number) click to toggle source

Verifica se o valor do dígito do estado é válido

# File lib/titulo_eleitor_utils/titulo_eleitor.rb, line 64
def self.valid_state?(titulo_eleitor_number)
  if titulo_eleitor_number.gsub!(/\.?/,"",).size == 12
    state_number = titulo_eleitor_number[8,2].to_i
    ((state_number >= 1) && (state_number <= 28)) ? true : false
  end
end

Public Instance Methods

check_remainder(remainder) click to toggle source

Checa o resto da divisão

# File lib/titulo_eleitor_utils/titulo_eleitor.rb, line 55
def check_remainder(remainder)
  if remainder < 2
    0
  else
    (11 - remainder)
  end
end
first_digit() click to toggle source

Gera o primeiro dígito verificador

# File lib/titulo_eleitor_utils/titulo_eleitor.rb, line 26
def first_digit
  if @numbers.size == 10
    value = 0
    multipliers = [2,3,4,5,6,7,8,9]

    multipliers.each_with_index do |mult, index|
      value += @numbers[index].to_i * mult
    end

    check_remainder(value % 11)
  end
end
generate_titulo_eleitor() click to toggle source

Gera o Título de Eleitor propriamente dito

# File lib/titulo_eleitor_utils/titulo_eleitor.rb, line 19
def generate_titulo_eleitor
  @numbers << first_digit
  @numbers << second_digit
  @numbers.join("")
end
second_digit() click to toggle source

Gera o segundo dígito verificador

# File lib/titulo_eleitor_utils/titulo_eleitor.rb, line 40
def second_digit
  if @numbers.size == 11
    last_three_digits = [@numbers[8], @numbers[9], @numbers[10]]
    value = 0
    multipliers = [7,8,9]

    multipliers.each_with_index do |mult, index|
      value += last_three_digits[index].to_i * mult
    end

    check_remainder(value % 11)
  end
end