class CpfUtils::Cpf

Attributes

numbers[R]

Acessor de leitura para os números

Public Class Methods

new(numbers) click to toggle source

Inicializador da classe

# File lib/cpf_utils/cpf.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

Public Instance Methods

check_remainder(remainder) click to toggle source

Checa o resto da divisão

# File lib/cpf_utils/cpf.rb, line 54
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/cpf_utils/cpf.rb, line 26
def first_digit
  if @numbers.size == 9
    value = 0
    multipliers = [10,9,8,7,6,5,4,3,2]

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

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

Gera o CPF propriamente dito

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

Gera o segundo dígito verificador

# File lib/cpf_utils/cpf.rb, line 40
def second_digit
  if @numbers.size == 10
    value = 0
    multipliers = [11,10,9,8,7,6,5,4,3,2]

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

    check_remainder(value % 11)
  end
end