class TookeUtils::CNPJ

Public Class Methods

calculate_digits(str) click to toggle source
# File lib/tooke_utils/cnpj.rb, line 30
def self.calculate_digits str
  sum1,sum2 = 0,0
  multipliers = [6,5,4,3,2,9,8,7,6,5,4,3,2]

  for i in 0..11 do 
    sum1 += multipliers[i+1] * str[i].to_i
    sum2 += multipliers[i] * str[i].to_i
  end

  # Digit 1
  digit_1 = sum1.remainder 11
  digit_1 < 2 ? digit_1 = 0 : digit_1 = 11 - digit_1

  # Digit 2
  sum2 += multipliers[12] * digit_1
  digit_2 = sum2.remainder 11
  digit_2 < 2 ? digit_2 = 0 : digit_2 = 11 - digit_2

  digits = [digit_1, digit_2]
end
generate() click to toggle source
# File lib/tooke_utils/cnpj.rb, line 10
def self.generate
  cnpj = (rand(0)*(10**12)).round.to_s
  while cnpj.size != 12
    cnpj += "0"
  end
  digits = (calculate_digits cnpj)
  cnpj += digits[0].to_s + digits[1].to_s
  cnpj = mask cnpj
  return cnpj
end
is_cnpj?(str) click to toggle source
# File lib/tooke_utils/cnpj.rb, line 6
def self.is_cnpj? str
  TookeUtils::General.only_numbers(str).size == 14
end
is_valid?(str) click to toggle source
# File lib/tooke_utils/cnpj.rb, line 51
def self.is_valid? str
  if is_cnpj? 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/cnpj.rb, line 21
def self.mask str
  if is_cnpj? str 
    blc = /([0-9]{2})([0-9]{3})([0-9]{3})([0-9]{4})([0-9]{2})/.match(str)
    blc[1] + "." + blc[2] + "." + blc[3] + "/" + blc[4] + "-" + blc[5]
  else
    nil
  end
end