Method: Jipcode.locate

Defined in:
lib/jipcode.rb

.locate(zipcode, opt = {}) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/jipcode.rb', line 9

def locate(zipcode, opt={})
  # 数字7桁以外の入力は受け付けない
  return [] unless zipcode&.match?(/\A\d{7}?\z/)

  # 上3桁にマッチするファイルが存在しなければ該当なし
  path = "#{ZIPCODE_PATH}/#{zipcode[0..2]}.csv"
  return [] unless File.exist?(path)

  addresses_array = CSV.read(path).select { |address| address[0] == zipcode }

  if opt.empty?
    # optが空の場合、直接basic_address_fromを呼んで不要な判定を避ける。
    addresses_array.map { |address_param| basic_address_from(address_param) }
  else
    addresses_array.map { |address_param| extended_address_from(address_param, opt) }
  end
end