module CardValidator::Validator::LuhnAlg
Public Class Methods
valid?(card)
click to toggle source
# File lib/card_validator/validator/luhn_alg.rb, line 7 def valid?(card) sum_of_doubles(card) % 10 == 0 end
Private Class Methods
even?(num)
click to toggle source
# File lib/card_validator/validator/luhn_alg.rb, line 25 def even?(num) num >= 2 && num % 2 == 0 end
sum_digits(num)
click to toggle source
# File lib/card_validator/validator/luhn_alg.rb, line 29 def sum_digits(num) sum = 0 num.to_s.split('').each do |dig| sum +=dig.to_i end sum end
sum_of_doubles(card)
click to toggle source
# File lib/card_validator/validator/luhn_alg.rb, line 13 def sum_of_doubles(card) doubles = card.split('').reverse.map.with_index do |num, ind| if even?(ind + 1) num = 2 * num.to_i num > 9 ? sum_digits(num) : num else num.to_i end end doubles.inject(0, :+) end