module Faker::Address

def city

def city
  case rand(4)
  when 0 then '%s %s%s' % [city_prefix, Name.first_name, city_suffix]
  when 1 then '%s %s'   % [city_prefix, Name.first_name]
  when 2 then '%s%s'    % [Name.first_name, city_suffix]
  when 3 then '%s%s'    % [Name.last_name, city_suffix]
  end
end

def city_prefix

def city_prefix
  CITY_PREFIXES.rand
end

def city_suffix

def city_suffix
  CITY_SUFFIXES.rand
end

def neighborhood

def neighborhood
  NEIGHBORHOOD.rand
end

def secondary_address

def secondary_address
  Faker.numerify(SEC_ADDR.rand)
end

def street_address(include_secondary = false)

def street_address(include_secondary = false)
  str = ( "#" * rand(3) ) << ('### %s' % street_name)
  str << ' ' << secondary_address  if include_secondary
  Faker.numerify(str)
end

def street_name

def street_name
  case rand(2)
  when 0 then "#{Name.last_name} #{street_suffix}"
  when 1 then "#{Name.first_name} #{street_suffix}"
  end
end

def street_suffix

def street_suffix
  STREET_SUFFIX.rand
end

def uk_country

def uk_country
  UK_COUNTRY.rand
end

def uk_county

UK Variants
def uk_county
  UK_COUNTY.rand
end

def uk_postcode

def uk_postcode
  Faker.bothify(UK_POSTCODE.rand).upcase
end

def us_state

def us_state
  STATE.rand
end

def us_state_abbr

def us_state_abbr
  STATE_ABBR.rand
end

def zip_code

def zip_code
  Faker.numerify ZIP_FORMATS.rand
end