module Faker::Russian::Snils

Public Instance Methods

snils(options = {}) click to toggle source
# File lib/faker/russian/snils.rb, line 4
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 Instance Methods

check_digits(snils_digits) click to toggle source
# File lib/faker/russian/snils.rb, line 15
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