Sha256: 500cf0c32e18d27a0f22cc355350c1e2a46ee7830f402f95a60643421e7f0f9b

Contents?: true

Size: 1.04 KB

Versions: 1

Compression:

Stored size: 1.04 KB

Contents

module Brid
  class CredCard < GenericID
    def initialize number
      @number = clear_number(number)

      @number = @number.rjust! 14, '0' unless (14..19).include? @number.length
    end

    def sequential 
      @sequential ||= begin
        @number[/^(.*).$/, 1]
      end
    end

    def association
      return :dinners  if @number.length == 14 and @number =~ /^3(0[0-5]|[68])/   # 300xxx-305xxx, 36xxxx, 38xxxx
      return :amex     if @number.length == 15 and @number =~ /^3[47]/            # 34xxxx, 37xxxx
      return :visa     if [13,16].include?(@number.length) and @number =~ /^4/    # 4xxxxx
      return :master   if @number.length == 16 and @number =~ /^5[1-5]/           # 51xxxx-55xxxx
      return :discover if @number.length == 16 and @number =~ /^6011/             # 6011xx
      return false
    end

    def invalid_sequential?
      @invalid_sequential ||=begin
        association != false
      end
    end

    private
    def valid_number
      sequential.mod10
    end
  end
end

CredCard = Brid::CredCard if not defined? CredCard

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
brid-0.2.1 lib/brid/ids/cred_card.rb