module Validatr::Verhoeff

Constants

D
F
INV

Public Class Methods

check_digit(number) click to toggle source

Generates the check digit for a number

# File lib/validatr/verhoeff.rb, line 41
def self.check_digit(number)
  digits = digits_from_number(number)
  digits.push(0)
  c = encode(digits)
  INV[c]
end
encode(digits) click to toggle source
# File lib/validatr/verhoeff.rb, line 48
def self.encode(digits)
  c = 0
  digits.reverse.map.with_index do |d, i|
    f = F[i % 8][d]
    c = D[c][f]
  end
  c
end
valid?(number) click to toggle source

Returns true if a number is a valid Verhoeff number, false otherwise

# File lib/validatr/verhoeff.rb, line 34
def self.valid?(number)
  digits = digits_from_number(number)
  c = encode(digits)
  c.zero?
end