class TookeUtils::CPF
Public Class Methods
calculate_digits(str)
click to toggle source
# File lib/tooke_utils/cpf.rb, line 30 def self.calculate_digits str sum1,sum2 = 0,0 for i in 0..8 do sum1 += str[i].to_i * (10-i) sum2 += str[i].to_i * (11-i) end # Digit 1 digit_1 = (sum1 * 10) % 11 digit_1 == 10 ? digit_1 = 0 : digit_1 # Digit 2 sum2 += digit_1 * 2 digit_2 = (sum2 * 10) % 11 digit_2 == 10 ? digit_2 = 0 : digit_2 digits = [digit_1, digit_2] end
generate()
click to toggle source
# File lib/tooke_utils/cpf.rb, line 10 def self.generate cpf = (rand(0)*(10**9)).round.to_s while cpf.size != 9 cpf += "0" end digits = (calculate_digits cpf) cpf += digits[0].to_s + digits[1].to_s cpf = mask cpf return cpf end
is_cpf?(str)
click to toggle source
# File lib/tooke_utils/cpf.rb, line 6 def self.is_cpf? str TookeUtils::General.only_numbers(str).size == 11 end
is_valid?(str)
click to toggle source
# File lib/tooke_utils/cpf.rb, line 50 def self.is_valid? str if is_cpf? str str = TookeUtils::General.only_numbers str digits = calculate_digits str # Verification digits[0] == str[-2].to_i && digits[1] == str[-1].to_i end end
mask(str)
click to toggle source
# File lib/tooke_utils/cpf.rb, line 21 def self.mask str if TookeUtils::General.only_numbers(str).size == 11 blc = /([0-9]{3})([0-9]{3})([0-9]{3})([0-9]{2})/.match(str) blc[1] + "." + blc[2] + "." + blc[3] + "-" + blc[4] else nil end end