Sha256: bcf7e3327e6cc41f901db78eaa6688e623d7b338b93ee252921da7ad313670e5

Contents?: true

Size: 896 Bytes

Versions: 9

Compression:

Stored size: 896 Bytes

Contents

require_relative "base"
require_relative "../commons/mod11"

module BrDocuments
  module IE
    class Pattern1 < Base
      include Commons::Mod11

      def initialize(number)
        super
        @mask = /^(\d{8}\-\d{1})$|^(\d{9})$/
        @weight = [9, 8, 7, 6, 5, 4, 3, 2]
      end

      private
      def valid_format?
        regex = @mask
        regex.match(@number).present?
      end

      def valid_digital_check?
        calculated_check_digit = generate_digital_check(only_numbers, @weight).to_s
        check_digit_valid = check_digit.eql? calculated_check_digit
        remove_mask_of_number if check_digit_valid

        check_digit_valid
      end

      def check_digit
        only_numbers[-1]
      end

      def remove_mask_of_number
        @number.replace only_numbers
      end

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

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
br_documents-0.1.3 lib/br_documents/ie/pattern1.rb
br_documents-0.1.2 lib/br_documents/ie/pattern1.rb
br_documents-0.1.1 lib/br_documents/ie/pattern1.rb
br_documents-0.1.0 lib/br_documents/ie/pattern1.rb
br_documents-0.0.15 lib/br_documents/ie/pattern1.rb
br_documents-0.0.14 lib/br_documents/ie/pattern1.rb
br_documents-0.0.13 lib/br_documents/ie/pattern1.rb
br_documents-0.0.12 lib/br_documents/ie/pattern1.rb
br_documents-0.0.11 lib/br_documents/ie/pattern1.rb