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