Module: BankTools::SE::Utils

Defined in:
lib/banktools-se/utils.rb

Class Method Summary collapse

Class Method Details

.luhn_checksum(number) ⇒ Object



16
17
18
19
20
21
22
23
24
25
# File 'lib/banktools-se/utils.rb', line 16

def self.luhn_checksum(number)
  digits = number.to_s.scan(/\d/).reverse.map { |x| x.to_i }
  digits = digits.each_with_index.map { |d, i|
    d *= 2 if i.even?
    d > 9 ? d - 9 : d
  }
  sum = digits.inject(0) { |m, x| m + x }
  mod = 10 - sum % 10
  mod == 10 ? 0 : mod
end

.valid_luhn?(number) ⇒ Boolean

Returns:

  • (Boolean)


6
7
8
9
10
11
12
13
14
# File 'lib/banktools-se/utils.rb', line 6

def self.valid_luhn?(number)
  digits = number.to_s.scan(/\d/).reverse.map { |x| x.to_i }
  digits = digits.each_with_index.map { |d, i|
    d *= 2 if i.odd?
    d > 9 ? d - 9 : d
  }
  sum = digits.inject(0) { |m, x| m + x }
  sum % 10 == 0
end