class ValidateCnpj::Cnpj

Constants

BLACKLIST

Public Class Methods

new(document) click to toggle source
# File lib/validate_cnpj/cnpj.rb, line 3
def initialize(document)
  @validate = validation(document)
end

Public Instance Methods

valid?() click to toggle source
# File lib/validate_cnpj/cnpj.rb, line 14
def valid?
  @validate
end
validation(document) click to toggle source
# File lib/validate_cnpj/cnpj.rb, line 7
def validation(document)
  return true if document.blank?
  return false if regex(document) == false
  return false if verify_blacklist(document) == true
  return validate?
end

Private Instance Methods

first_verification() click to toggle source
# File lib/validate_cnpj/cnpj.rb, line 32
def first_verification
  sum = multiply_sum([5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2], @number)
  verification(sum%11).to_s
end
formal_cnpj(document) click to toggle source
# File lib/validate_cnpj/cnpj.rb, line 57
def formal_cnpj(document)
  document = document.gsub(/[\/.-]/, "")
  document =~ /(\d{2})(\d{3})(\d{3})(\d{4})(\d{2})/
  return "#{$1}.#{$2}.#{$3}/#{$4}-#{$5}"
end
multiply_sum(array, number) click to toggle source
# File lib/validate_cnpj/cnpj.rb, line 42
def multiply_sum(array, number)
  multiply = []
  number.scan(/\d{1}/).each_with_index { |e, i| multiply[i] = e.to_i * array[i] }
  multiply.inject { |s, e| s + e }
end
regex(document) click to toggle source
# File lib/validate_cnpj/cnpj.rb, line 20
def regex(document)
  doc = document =~ /^(\d{2}\.?\d{3}\.?\d{3}\/?\d{4})-?(\d{2})$/
  @number = $1
  @result = $2
  doc == 0 ? true : false
end
second_verification() click to toggle source
# File lib/validate_cnpj/cnpj.rb, line 37
def second_verification
  sum = multiply_sum([6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2], @number + first_verification)
  verification(sum%11).to_s
end
validate?() click to toggle source
# File lib/validate_cnpj/cnpj.rb, line 27
def validate?
  @number = @number.gsub(/[\/.-]/, "")
  @result == (first_verification + second_verification) ? true : false
end
verification(rest) click to toggle source
# File lib/validate_cnpj/cnpj.rb, line 48
def verification(rest)
  rest < 2 ? 0 : (11 - rest)
end
verify_blacklist(document) click to toggle source
# File lib/validate_cnpj/cnpj.rb, line 52
def verify_blacklist(document)
  cnpj = formal_cnpj(document)
  BLACKLIST.include?(cnpj)
end