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