Sha256: 3ea396b9681d3f7df3e06c07808ff5ccf032616695917c5c02a3d5600213cafa

Contents?: true

Size: 949 Bytes

Versions: 11

Compression:

Stored size: 949 Bytes

Contents

require_relative "../commons/mod11"

module BrDocuments
  module CnpjCpf
    module Document
      include Commons::Mod11

      protected
      def valid_number?(number, regex, weight1, weight2)
        valid_format?(number, regex) and
         not sequence_of_equal_numbers?(number) and
         valid_digital_check?(number, weight1, weight2)
      end

      private
      def valid_format?(number, regex)
        regex.match(number).present?
      end

      def sequence_of_equal_numbers?(number)
        remove_mask(number).split("").uniq.length == 1
      end

      def valid_digital_check?(number, weight1, weight2)
        digital_check1 = generate_digital_check(remove_mask(number), weight1)
        digital_check2 = generate_digital_check(remove_mask(number), weight2)
        number[-2, 2].eql? "#{digital_check1}#{digital_check2}"
      end

      def remove_mask(number)
        number.gsub(/[\.\/-]/, "")
      end
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
br_documents-0.0.12 lib/br_documents/cnpj_cpf/document.rb
br_documents-0.0.11 lib/br_documents/cnpj_cpf/document.rb
br_documents-0.0.10 lib/br_documents/cnpj_cpf/document.rb
br_documents-0.0.9 lib/br_documents/cnpj_cpf/document.rb
br_documents-0.0.8 lib/br_documents/cnpj_cpf/document.rb
br_documents-0.0.7 lib/br_documents/cnpj_cpf/document.rb
br_documents-0.0.6 lib/br_documents/cnpj_cpf/document.rb
br_documents-0.0.5 lib/br_documents/cnpj_cpf/document.rb
br_documents-0.0.4 lib/br_documents/cnpj_cpf/document.rb
br_documents-0.0.3 lib/br_documents/cnpj_cpf/document.rb
br_documents-0.0.2 lib/br_documents/cnpj_cpf/document.rb