lib/faker/russian/snils.rb
module Faker
module Russian
module Snils
def snils(options = {})
options.assert_valid_keys(:sequence_number)
sequence = find_sequence(options[:sequence_number])
snils_digits = '%09d' % sequence.rand(1_000_000_000)
snils_digits + check_digits(snils_digits)
end
private
def check_digits(snils_digits)
digits = snils_digits.split('').map(&:to_i)
checksum = digits.each_with_index.inject(0) do |sum, (digit, index)|
sum + digit * (9 - index)
end % 101 % 100
'%02d' % checksum
end
end
end
end