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

Constant Summary collapse

INDEX_PATH =
"#{File.dirname(__FILE__)}/../../zipcode/by_prefecture/latest"
INDEX_VERSION_FILE =
"#{File.dirname(__FILE__)}/../../zipcode/by_prefecture/version"
VERSION =
'0.0.1'

Class Method Summary collapse

Class Method Details

.create_index!Object

Create index files by Jipcode data.



18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/jipcode/address_locator/indexer.rb', line 18

def self.create_index!
  refresh_index_dir

  index = collect_index

  export_index(index)

  File.open(INDEX_VERSION_FILE, 'w') do |f|
    f.write(Jipcode::VERSION)
  end
rescue StandardError => e
  raise e, 'Failed to create index'
end

.exist_latest_index?Boolean

Make sure Jipcode version and index version are the same.

Returns:

  • (Boolean)

    result



10
11
12
13
14
15
# File 'lib/jipcode/address_locator/indexer.rb', line 10

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

Parameters:

  • search_address (String)

Returns:

  • (Array<Hash>)

    zipcode data



12
13
14
15
16
17
# File 'lib/jipcode/address_locator/locator.rb', line 12

def self.locate(search_address)
  find_by_address(search_address)
    .yield_self { |addresses| calc_and_add_distance(addresses, search_address) }
    .sort_by(&:last)
    .reverse
end