class BrazilianValidators::Cpf

Public Class Methods

new(document) click to toggle source
# File lib/brazilian_validators/cpf.rb, line 3
def initialize(document)
  raise(StandardError, "Not a valid cpf format") unless document.match(/[0-9]{3}\.[0-9]{3}\.[0-9]{3}\-[0-9]{2}|\d{11}/)
  document = document.to_s
  document.gsub!(/\D/, "")
  @digits = document[0..8]
  @first_digit_checker = document[9]
  @second_digit_checker = document[10]
end
valid?(document = '') click to toggle source
# File lib/brazilian_validators/cpf.rb, line 18
def self.valid?(document = '')
  BrazilianValidators::Cpf.new(document).valid?
end

Public Instance Methods

valid?() click to toggle source
# File lib/brazilian_validators/cpf.rb, line 12
def valid?
  first_digit = check_digit(@digits, 10)
  second_digit = check_digit(@digits + first_digit.to_s, 11)
  first_digit == @first_digit_checker.to_i && second_digit == @second_digit_checker.to_i
end

Private Instance Methods

check_digit(digits, multiplicator) click to toggle source
# File lib/brazilian_validators/cpf.rb, line 24
def check_digit(digits, multiplicator)
  sum = 0
  digits.split("").each do |v|
    sum += v.to_i * multiplicator
    multiplicator -= 1
  end
  remainder = sum % 11
  remainder < 2 ? 0 : (11 - remainder)
end