class Faker::Code

def generate_sin_check_digit(digits)

def generate_sin_check_digit(digits)
  # Fast Luhn checksum code from luhn.js:
  # https://gist.github.com/ShirtlessKirk/2134376
  len = 9
  mul = 0
  luhn_arr = [
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
    [0, 2, 4, 6, 8, 1, 3, 5, 7, 9]
  ]
  sum = 0
  while len.positive?
    len -= 1
    num = digits[len].to_i
    sum += luhn_arr[mul][num]
    mul ^= 1
  end
  checksum = sum % 10
  checksum.zero? ? checksum : (10 - checksum)
end