module Faker::Russian::Okpo
Public Instance Methods
okpo(options = {})
click to toggle source
# File lib/faker/russian/okpo.rb, line 4 def okpo(options = {}) options.assert_valid_keys(:sequence_number) sequence = find_sequence(options[:sequence_number]) okpo_digits = okpo_region_numbers(sequence) okpo_digits + okpo_calc(okpo_digits) end
Private Instance Methods
okpo_calc(okpo_digits)
click to toggle source
# File lib/faker/russian/okpo.rb, line 22 def okpo_calc(okpo_digits) (okpo_digits.split(//).map(&:to_i).each_with_index.inject(0) { |s, (p, i)| s + p * (i + 1) } % 11 % 10).to_s end
okpo_region_numbers(sequence)
click to toggle source
# File lib/faker/russian/okpo.rb, line 14 def okpo_region_numbers(sequence) if [true, false][sequence.rand(2)] sprintf '%07d', sequence.rand(10_000_000) else sprintf '%09d', sequence.rand(1_000_000_000) end end