module BrDocuments::CnpjCpf::Document

Public Class Methods

new(number) click to toggle source
# File lib/br_documents/cnpj_cpf/document.rb, line 8
def initialize(number)
  @number = number
end

Public Instance Methods

formatted() click to toggle source
# File lib/br_documents/cnpj_cpf/document.rb, line 16
def formatted
  valid? ? format_number : ''
end
valid?() click to toggle source
# File lib/br_documents/cnpj_cpf/document.rb, line 12
def valid?
  valid_format? && !sequence_of_equal_numbers? && valid_check_digit?
end

Private Instance Methods

number_without_mask() click to toggle source
# File lib/br_documents/cnpj_cpf/document.rb, line 38
def number_without_mask
  @number.gsub(/[\.\/-]/, '')
end
sequence_of_equal_numbers?() click to toggle source
# File lib/br_documents/cnpj_cpf/document.rb, line 26
def sequence_of_equal_numbers?
  number_without_mask.chars.uniq.length == 1
end
valid_check_digit?() click to toggle source
# File lib/br_documents/cnpj_cpf/document.rb, line 30
def valid_check_digit?
  weight1, weight2 = weights_for_digital_check

  digital_check1 = generate_check_digit(number_without_mask, weight1)
  digital_check2 = generate_check_digit(number_without_mask, weight2)
  @number[-2, 2] == "#{digital_check1}#{digital_check2}"
end
valid_format?() click to toggle source
# File lib/br_documents/cnpj_cpf/document.rb, line 22
def valid_format?
  format_regex.match(@number).present?
end