Module: Vydumschik::Address

Defined in:
lib/vydumschik/address.rb

Overview

This module generates random addresses

Constant Summary collapse

MAX_APT =

Maximum number of apartments in building

100
BUILDING_LIMITS =

Maximum number of buildings for different types of streets

{:street => 50, :alley => 10, :avenue => 120, :square => 10, :other => 20}
HOUSE_PROBABILITY =

Probability of building without apartments

0.2
MODIFIER_PROBABILITY =

Probability of building number having a modifier

0.05
BUILDING_MODIFIERS =

Building number modifiers

%w(а б в г д)

Class Method Summary collapse

Class Method Details

.apartmentObject

Returns a random apartment number



38
39
40
# File 'lib/vydumschik/address.rb', line 38

def self.apartment
  (1+rand(MAX_APT)).to_s
end

.building(limit = BUILDING_LIMITS[:other]) ⇒ Object

Returns a random building number



31
32
33
34
35
# File 'lib/vydumschik/address.rb', line 31

def self.building(limit = BUILDING_LIMITS[:other])
  bld = (1+rand(limit)).to_s
  bld+='-'+BUILDING_MODIFIERS[rand BUILDING_MODIFIERS.length] if rand<MODIFIER_PROBABILITY
  bld
end

.streetObject

Returns a random street name



26
27
28
# File 'lib/vydumschik/address.rb', line 26

def self.street
  data[:streets][rand data[:streets].length][:name]
end

.street_addressObject

Returns a random street address



43
44
45
46
47
48
49
50
51
52
# File 'lib/vydumschik/address.rb', line 43

def self.street_address
  street = data[:streets][rand data[:streets].length]
  bld = building(BUILDING_LIMITS[street[:type]])
  if rand>0.5
    apt = (rand<HOUSE_PROBABILITY) ? bld : bld+'/'+apartment
  else
    apt = (rand<HOUSE_PROBABILITY) ? "д. #{bld}" : "д. #{bld}, кв. #{apartment}"
  end
  "#{street[:name]}, #{apt}"
end