module Jipcode
Constants
- PREFECTURE_CODE
- VERSION
- ZIPCODE_PATH
Public Class Methods
basic_address_from(address_param)
click to toggle source
# File lib/jipcode.rb, line 27 def basic_address_from(address_param) { zipcode: address_param[0], prefecture: address_param[1], city: address_param[2], town: address_param[3] } end
extended_address_from(address_param, opt={})
click to toggle source
# File lib/jipcode.rb, line 36 def extended_address_from(address_param, opt={}) address = basic_address_from(address_param) address[:prefecture_code] = PREFECTURE_CODE.invert[address_param[1]] if opt[:prefecture_code] address end
locate(zipcode, opt={})
click to toggle source
# 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
Private Instance Methods
basic_address_from(address_param)
click to toggle source
# File lib/jipcode.rb, line 27 def basic_address_from(address_param) { zipcode: address_param[0], prefecture: address_param[1], city: address_param[2], town: address_param[3] } end
extended_address_from(address_param, opt={})
click to toggle source
# File lib/jipcode.rb, line 36 def extended_address_from(address_param, opt={}) address = basic_address_from(address_param) address[:prefecture_code] = PREFECTURE_CODE.invert[address_param[1]] if opt[:prefecture_code] address end
locate(zipcode, opt={})
click to toggle source
# 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