Class: CpfUtils::Cpf

Inherits:
Object
  • Object
show all
Defined in:
lib/cpf_utils/cpf.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(numbers) ⇒ Cpf

Inicializador da classe



8
9
10
11
12
13
14
15
16
# 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

Instance Attribute Details

#numbersObject (readonly)

Acessor de leitura para os números



5
6
7
# File 'lib/cpf_utils/cpf.rb', line 5

def numbers
  @numbers
end

Instance Method Details

#check_remainder(remainder) ⇒ Object

Checa o resto da divisão



54
55
56
57
58
59
60
# File 'lib/cpf_utils/cpf.rb', line 54

def check_remainder(remainder)
  if remainder < 2
    0
  else
    (11 - remainder)
  end
end

#first_digitObject

Gera o primeiro dígito verificador



26
27
28
29
30
31
32
33
34
35
36
37
# 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_cpfObject

Gera o CPF propriamente dito



19
20
21
22
23
# File 'lib/cpf_utils/cpf.rb', line 19

def generate_cpf
  @numbers << first_digit
  @numbers << second_digit
  @numbers.join("")
end

#second_digitObject

Gera o segundo dígito verificador



40
41
42
43
44
45
46
47
48
49
50
51
# 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