Sha256: bc1c9594832f949595950d05d9bbc1c9c9b45a53b0469dd72f431b49894e431b

Contents?: true

Size: 730 Bytes

Versions: 30

Compression:

Stored size: 730 Bytes

Contents

# frozen_string_literal: true

require 'jpostcode/version'
require 'jpostcode/address'
require 'json'

module Jpostcode
  DATA_DIR = "#{File.dirname(__FILE__)}/../jpostcode-data/data/json/"

  module_function

  def find(raw_zip_code)
    zip_code = raw_zip_code.to_s.delete('-')
    return nil unless zip_code.match?(/^\d{7,7}$/)

    json_file = "#{DATA_DIR}#{zip_code.slice(0, 3)}.json"
    return nil unless File.exist?(json_file)

    data = JSON.parse(File.read(json_file))
    address_data = data[zip_code.slice(3, 4)]
    return nil if address_data.nil?

    if address_data.instance_of?(Array)
      address_data.map { |a| Jpostcode::Address.new(a) }
    else
      Jpostcode::Address.new(address_data)
    end
  end
end

Version data entries

30 entries across 30 versions & 1 rubygems

Version Path
jpostcode-1.0.0.20250301 lib/jpostcode.rb
jpostcode-1.0.0.20250206 lib/jpostcode.rb
jpostcode-1.0.0.20241201 lib/jpostcode.rb
jpostcode-1.0.0.20241101 lib/jpostcode.rb
jpostcode-1.0.0.20241001 lib/jpostcode.rb
jpostcode-1.0.0.20240901 lib/jpostcode.rb
jpostcode-1.0.0.20240807 lib/jpostcode.rb
jpostcode-1.0.0.20240703 lib/jpostcode.rb
jpostcode-1.0.0.20240701 lib/jpostcode.rb
jpostcode-1.0.0.20240601 lib/jpostcode.rb
jpostcode-1.0.0.20240401 lib/jpostcode.rb
jpostcode-1.0.0.20240301 lib/jpostcode.rb
jpostcode-1.0.0.20240201 lib/jpostcode.rb
jpostcode-1.0.0.20240101 lib/jpostcode.rb
jpostcode-1.0.0.20231201 lib/jpostcode.rb
jpostcode-1.0.0.20231101 lib/jpostcode.rb
jpostcode-1.0.0.20231001 lib/jpostcode.rb
jpostcode-1.0.0.20230901 lib/jpostcode.rb
jpostcode-1.0.0.20230801 lib/jpostcode.rb
jpostcode-1.0.0.20230701 lib/jpostcode.rb