Module: Jipcode::AddressLocator
- Defined in:
- lib/jipcode/address_locator.rb,
lib/jipcode/address_locator/helper.rb,
lib/jipcode/address_locator/indexer.rb,
lib/jipcode/address_locator/locator.rb,
lib/jipcode/address_locator/version.rb,
lib/jipcode/address_locator/normalizer.rb
Constant Summary collapse
- INDEX_PATH =
"#{File.dirname(__FILE__)}/../../zipcode/by_prefecture/latest"- INDEX_VERSION_FILE =
"#{File.dirname(__FILE__)}/../../zipcode/by_prefecture/version"- VERSION =
'0.1.2'- GAIKU_HYOUJI =
丁目・番・号・地割・番地をハイフンに置換する
1 %w[ 丁目 番地 番 号 地割 の ].freeze
Class Method Summary collapse
-
.create_index! ⇒ Object
Create index files by Jipcode data.
-
.exist_latest_index? ⇒ Boolean
Make sure Jipcode version and index version are the same.
-
.locate(search_address) ⇒ Array<Hash>
Locate zipcode data by address.
-
.normalize_address(raw_address) ⇒ String
Normalize japanese address for search.
Class Method Details
.create_index! ⇒ Object
Create index files by Jipcode data.
20 21 22 23 24 25 26 27 28 |
# File 'lib/jipcode/address_locator/indexer.rb', line 20 def self.create_index! refresh_index_dir index = collect_index export_index(index) File.write(INDEX_VERSION_FILE, Jipcode::VERSION) end |
.exist_latest_index? ⇒ Boolean
Make sure Jipcode version and index version are the same.
12 13 14 15 16 17 |
# File 'lib/jipcode/address_locator/indexer.rb', line 12 def self.exist_latest_index? return false unless File.exist?(INDEX_VERSION_FILE) version = File.read(INDEX_VERSION_FILE) version == Jipcode::VERSION end |
.locate(search_address) ⇒ Array<Hash>
Locate zipcode data by address
13 14 15 16 17 18 19 20 |
# File 'lib/jipcode/address_locator/locator.rb', line 13 def self.locate(search_address) normalized = normalize_address(search_address) find_by_address(normalized) .map { |address| calc_and_add_distance!(address, normalized) } .sort_by { |address| address['distance'] } .reverse end |
.normalize_address(raw_address) ⇒ String
Normalize japanese address for search.
11 12 13 14 15 |
# File 'lib/jipcode/address_locator/normalizer.rb', line 11 def self.normalize_address(raw_address) zenkaku2hankaku(raw_address) .then { |address| kansuji2hankaku(address) } .then { |address| jukyohyouji2hyphen(address) } end |