Module: CreditCardSupport::LuhnNumber

Included in:
CreditCardNumber
Defined in:
lib/credit_card_support/luhn_number.rb

Instance Method Summary collapse

Instance Method Details

#luhn?Boolean

Returns:

  • (Boolean)


4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/credit_card_support/luhn_number.rb', line 4

def luhn?
  full_number = to_s.gsub(/[^0-9]/, '')
  return false unless full_number and full_number.length > 2

  parts   = full_number.split(//).map(&:to_i)

  double  = parts.length % 2 == 0
  parts   = parts.collect do |part|
    number  = double ? part*2 : part
    double  = !double
    number
  end

  sum     = parts.join("").split(//).map(&:to_i).inject(:+)
  sum % 10 == 0
end