japanese_address_parser 2.0.0 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e4b877e72c86cffe1eb4df73573840a2be13e223310239f390cbfa377229eb5a
4
- data.tar.gz: 7f24361d7258becc95379c2479b5dfcece30290ec22d031e8e56cdbb9e6147b9
3
+ metadata.gz: dcce626ea8eb1f3c3e2099781dbe27a1e8ec4c8b9ef8256382ced63481f83849
4
+ data.tar.gz: 9445753fbce527763ed50cb88adb1f1f00c7fedc1c21cc959c7f6c7c7b1fbfe4
5
5
  SHA512:
6
- metadata.gz: 28b4114891fe592f84c6c4b257b8c0366c5248d36c132f54e8915f2b762be8a11cd3b83c7432d41b0ceb0258ad3aaf86e9bd81c674a09796cb479e60708f2b03
7
- data.tar.gz: ce6f745d663fd224f5b34e47fd85364244ad028ef0d771a3fd527e23dbf54b836258be64d874e6f9ba74ec0ee162016e7df3a711034dae0ba8cfa675487ba586
6
+ metadata.gz: 6eb0c0f7aa0dc7775cd28b6f246a307c91d612429b086422406d562f68dd7c992dcccc05be5c2cef13319dd0e98a2748be50808dd14bcff18a169370b59e17d1
7
+ data.tar.gz: 23f4f05762a7c9bf71f074defca75b6a09bb3d63fc0bb6b1d42cbcb8169c231aa3d09667fa6d54d4791953ec27806b457feb82be2a557f8c09d02865982e03cd
data/.rubocop.yml CHANGED
@@ -24,11 +24,14 @@ Style/Copyright:
24
24
  Style/AsciiComments:
25
25
  Enabled: false
26
26
 
27
- # CSVのヘッダーの日本語を解釈するために日本語文字列のハッシュを許容する。
28
27
  Style/StringHashKeys:
29
28
  Exclude:
29
+ # CSVのヘッダーの日本語を解釈するために日本語文字列のハッシュを許容する。
30
30
  - lib/japanese_address_parser/csv_parser.rb
31
31
 
32
+ # ライブラリが返すハッシュのキーが文字列なので許容する。
33
+ - spec/japanese_address_parser/address_normalizer_spec.rb
34
+
32
35
  # elseがない場合にはcase文ではなくif文を許容する。
33
36
  Style/MissingElse:
34
37
  EnforcedStyle: case
data/.rubocop_todo.yml CHANGED
@@ -1,6 +1,6 @@
1
1
  # This configuration was generated by
2
2
  # `rubocop --auto-gen-config`
3
- # on 2022-01-08 06:12:26 UTC using RuboCop version 1.24.1.
3
+ # on 2022-02-05 13:11:56 UTC using RuboCop version 1.24.1.
4
4
  # The point is for the user to remove these configuration records
5
5
  # one by one as the offenses are removed from the code base.
6
6
  # Note that changes in the inspected code, or installation of new
@@ -13,44 +13,34 @@ Layout/RedundantLineBreak:
13
13
  Exclude:
14
14
  - 'lib/japanese_address_parser/csv_parser.rb'
15
15
 
16
- # Offense count: 3
16
+ # Offense count: 2
17
17
  # Configuration parameters: IgnoredMethods, CountRepeatedAttributes.
18
18
  Metrics/AbcSize:
19
- Max: 39
20
-
21
- # Offense count: 1
22
- # Configuration parameters: IgnoredMethods.
23
- Metrics/CyclomaticComplexity:
24
- Max: 9
19
+ Max: 27
25
20
 
26
- # Offense count: 5
21
+ # Offense count: 2
27
22
  # Configuration parameters: CountComments, CountAsOne, ExcludedMethods, IgnoredMethods.
28
23
  Metrics/MethodLength:
29
- Max: 36
24
+ Max: 13
30
25
 
31
- # Offense count: 2
26
+ # Offense count: 1
32
27
  # Configuration parameters: CountComments, CountAsOne.
33
28
  Metrics/ModuleLength:
34
- Max: 308
29
+ Max: 117
35
30
 
36
31
  # Offense count: 1
37
32
  # Configuration parameters: CountKeywordArgs, MaxOptionalParameters.
38
33
  Metrics/ParameterLists:
39
34
  Max: 6
40
35
 
41
- # Offense count: 1
42
- # Configuration parameters: IgnoredMethods.
43
- Metrics/PerceivedComplexity:
44
- Max: 9
45
-
46
- # Offense count: 6
36
+ # Offense count: 4
47
37
  # Configuration parameters: CountAsOne.
48
38
  RSpec/ExampleLength:
49
- Max: 287
39
+ Max: 6
50
40
 
51
- # Offense count: 10
41
+ # Offense count: 4
52
42
  RSpec/MultipleExpectations:
53
- Max: 287
43
+ Max: 5
54
44
 
55
45
  # Offense count: 9
56
46
  # Configuration parameters: AllowedConstants.
@@ -59,31 +49,32 @@ Style/Documentation:
59
49
  - 'spec/**/*'
60
50
  - 'test/**/*'
61
51
  - 'lib/japanese_address_parser.rb'
52
+ - 'lib/japanese_address_parser/address_normalizer.rb'
53
+ - 'lib/japanese_address_parser/address_normalizer/normalize_japanese_addresses_schmoozer.rb'
62
54
  - 'lib/japanese_address_parser/address_parser.rb'
63
- - 'lib/japanese_address_parser/address_parser/pattern_creator.rb'
64
- - 'lib/japanese_address_parser/address_parser/town_and_after_normalizer.rb'
65
55
  - 'lib/japanese_address_parser/csv_parser.rb'
66
56
  - 'lib/japanese_address_parser/models/address.rb'
67
57
  - 'lib/japanese_address_parser/models/city.rb'
68
58
  - 'lib/japanese_address_parser/models/prefecture.rb'
69
59
  - 'lib/japanese_address_parser/models/town.rb'
70
60
 
71
- # Offense count: 26
61
+ # Offense count: 27
72
62
  # Configuration parameters: RequireForNonPublicMethods.
73
63
  Style/DocumentationMethod:
74
64
  Exclude:
75
65
  - 'spec/**/*'
76
66
  - 'test/**/*'
77
67
  - 'lib/japanese_address_parser.rb'
68
+ - 'lib/japanese_address_parser/address_normalizer.rb'
69
+ - 'lib/japanese_address_parser/address_normalizer/normalize_japanese_addresses_schmoozer.rb'
78
70
  - 'lib/japanese_address_parser/address_parser.rb'
79
- - 'lib/japanese_address_parser/address_parser/town_and_after_normalizer.rb'
80
71
  - 'lib/japanese_address_parser/csv_parser.rb'
81
72
  - 'lib/japanese_address_parser/models/address.rb'
82
73
  - 'lib/japanese_address_parser/models/city.rb'
83
74
  - 'lib/japanese_address_parser/models/prefecture.rb'
84
75
  - 'lib/japanese_address_parser/models/town.rb'
85
76
 
86
- # Offense count: 8
77
+ # Offense count: 9
87
78
  # Cop supports --auto-correct.
88
79
  # Configuration parameters: AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, IgnoredPatterns.
89
80
  # URISchemes: http, https
data/CHANGELOG.md CHANGED
@@ -17,6 +17,11 @@ Change Log の形式は [Keep a Changelog](http://keepachangelog.com/) に従い
17
17
 
18
18
  ### Security
19
19
 
20
+ ## [2.1.0] - 2022-02-05
21
+ ### Changed
22
+
23
+ - [#38](https://github.com/yamat47/japanese_address_parser/pull/38) 住所の解析に失敗したときに発生する例外のクラスを`JapaneseAddressParser::NormalizeError`に固定した。([@yamat47](https://github.com/yamat47))
24
+
20
25
  ## [2.0.0] - 2022-01-31
21
26
  ### Added
22
27
 
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- japanese_address_parser (2.0.0)
4
+ japanese_address_parser (2.1.0)
5
5
  schmooze
6
6
 
7
7
  GEM
data/README.md CHANGED
@@ -88,23 +88,9 @@ address.furigana #=> "トウキョウトミナトクシバコウエン 4"
88
88
  | `longitude` | 経度 | `"141.319722"` |
89
89
  </details>
90
90
 
91
- 都道府県や市区町村、町域のそれぞれの属性の値は geolonia/japanese-addresses が提供している CSV ファイルの値そのままです。
91
+ 都道府県や市区町村、町域のそれぞれの属性の値は [geolonia/japanese-addresses](https://github.com/geolonia/japanese-addresses) が提供している CSV ファイルの値そのままです。
92
92
 
93
- 与えられた住所からうまく地名が見つけられないときはそれ以降の探索を中止します。
94
- 見つけられた地名のデータだけを含んだデータを返します。
95
-
96
- ```ruby
97
- musashi = JapaneseAddressParser.call('武蔵国港区芝公園4-2-8')
98
- musashi.prefecture #=> nil
99
- musashi.city #=> nil
100
- musashi.town #=> nil
101
-
102
- kounan = JapaneseAddressParser.call('東京都港南区芝公園4-2-8')
103
- kounan.prefecture.name #=> "東京都"
104
- kounan.city #=> nil
105
- kounan.town #=> nil
106
- kounan.furigana #=> "トウキョウト"
107
- ```
93
+ 何らかの理由で住所の解析に失敗したときは `JapaneseAddressParser::NormalizeError` を `raise` します。
108
94
 
109
95
  ## 開発
110
96
  開発に必要なライブラリをインストールするには、このコマンドを実行してください:
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'schmooze'
4
+
5
+ module JapaneseAddressParser
6
+ module AddressNormalizer
7
+ class NormalizeJapaneseAddressesSchmoozer < ::Schmooze::Base
8
+ JS_PACKAGE_PATH = ::File.expand_path('../../../js', __dir__)
9
+ public_constant :JS_PACKAGE_PATH
10
+
11
+ dependencies normalize_japanese_addresses: '@geolonia/normalize-japanese-addresses'
12
+ method :normalize, 'normalize_japanese_addresses.normalize'
13
+
14
+ def self.call(full_address)
15
+ new(::JapaneseAddressParser::AddressNormalizer::NormalizeJapaneseAddressesSchmoozer::JS_PACKAGE_PATH).normalize(full_address)
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'address_normalizer/normalize_japanese_addresses_schmoozer'
4
+ require_relative 'exceptions'
5
+
6
+ module JapaneseAddressParser
7
+ module AddressNormalizer
8
+ def call(full_address)
9
+ # https://github.com/geolonia/normalize-japanese-addresses を使って住所を正規化する。
10
+ ::JapaneseAddressParser::AddressNormalizer::NormalizeJapaneseAddressesSchmoozer.call(full_address)
11
+
12
+ # Schmoozeが稀に例外を吐くことがある。
13
+ # ライブラリを利用するときに扱いやすくするために例外のクラスを固定しておく。
14
+ rescue ::StandardError
15
+ raise(::JapaneseAddressParser::NormalizeError)
16
+ end
17
+
18
+ module_function :call
19
+ end
20
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module JapaneseAddressParser
4
+ class NormalizeError < StandardError; end
5
+ end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module JapaneseAddressParser
4
- VERSION = '2.0.0'
4
+ VERSION = '2.1.0'
5
5
  public_constant :VERSION
6
6
  end
@@ -1,22 +1,17 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require_relative 'japanese_address_parser/address_normalizer'
3
4
  require_relative 'japanese_address_parser/address_parser'
4
5
  require_relative 'japanese_address_parser/version'
5
- require_relative 'japanese_address_parser/normalize_japanese_addresses_schmoozer'
6
6
 
7
7
  module JapaneseAddressParser
8
- JS_PACKAGE_PATH = ::File.expand_path('../js', __dir__)
9
- public_constant :JS_PACKAGE_PATH
10
-
11
8
  module_function
12
9
 
13
10
  def call(full_address)
14
- # https://github.com/geolonia/normalize-japanese-addresses を使って住所を正規化する。
15
- normalize_japanese_addresses = ::JapaneseAddressParser::NormalizeJapaneseAddressesSchmoozer.new(::JapaneseAddressParser::JS_PACKAGE_PATH)
16
- result = normalize_japanese_addresses.normalize(full_address)
11
+ normalized = ::JapaneseAddressParser::AddressNormalizer.call(full_address)
17
12
 
18
13
  # このライブラリで探索するのは町域まで。
19
14
  # それ以降のデータを使って探索するとデータと名前が一致しないことがあるので、町域までのデータを使う。
20
- ::JapaneseAddressParser::AddressParser.call("#{result['pref']}#{result['city']}#{result['town']}")
15
+ ::JapaneseAddressParser::AddressParser.call("#{normalized['pref']}#{normalized['city']}#{normalized['town']}")
21
16
  end
22
17
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: japanese_address_parser
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yamaguchi Takuya
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-01-30 00:00:00.000000000 Z
11
+ date: 2022-02-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: schmooze
@@ -252,6 +252,8 @@ files:
252
252
  - js/package-lock.json
253
253
  - js/package.json
254
254
  - lib/japanese_address_parser.rb
255
+ - lib/japanese_address_parser/address_normalizer.rb
256
+ - lib/japanese_address_parser/address_normalizer/normalize_japanese_addresses_schmoozer.rb
255
257
  - lib/japanese_address_parser/address_parser.rb
256
258
  - lib/japanese_address_parser/csv_parser.rb
257
259
  - lib/japanese_address_parser/data/01-01101.csv
@@ -2196,11 +2198,11 @@ files:
2196
2198
  - lib/japanese_address_parser/data/47-47382.csv
2197
2199
  - lib/japanese_address_parser/data/47.csv
2198
2200
  - lib/japanese_address_parser/data/prefectures.csv
2201
+ - lib/japanese_address_parser/exceptions.rb
2199
2202
  - lib/japanese_address_parser/models/address.rb
2200
2203
  - lib/japanese_address_parser/models/city.rb
2201
2204
  - lib/japanese_address_parser/models/prefecture.rb
2202
2205
  - lib/japanese_address_parser/models/town.rb
2203
- - lib/japanese_address_parser/normalize_japanese_addresses_schmoozer.rb
2204
2206
  - lib/japanese_address_parser/version.rb
2205
2207
  - sig/japanese_address_parser.rbs
2206
2208
  homepage: https://github.com/yamat47/japanese_address_parser
@@ -1,10 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'schmooze'
4
-
5
- module JapaneseAddressParser
6
- class NormalizeJapaneseAddressesSchmoozer < ::Schmooze::Base
7
- dependencies normalize_japanese_addresses: '@geolonia/normalize-japanese-addresses'
8
- method :normalize, 'normalize_japanese_addresses.normalize'
9
- end
10
- end