Module: JapaneseAddressParser::NormalizeHelpers
- Defined in:
- lib/japanese_address_parser/normalize_helpers.rb,
sig/normalize_helpers.rbs
Overview
入力住所に対する前正規化(prenormalize)。NFC 化・スペース正規化・全角英数の半角化・ 数字に隣接する各種横棒のハイフン統一・丁目/区郡/番地以前のスペース削除を行う。
Constant Summary collapse
- DASH =
数字の前後で統一する横棒(ハイフン・マイナス・長音記号・罫線等)の文字クラス。
/[--﹣−‐⁃‑‒–—﹘―⎯⏤ーー─━]/- NUMBER_ADJACENT_DASH =
JS: /([0-90-9一二三四五六七八九〇十百千][横棒])|([横棒])[0-90-9一二三四五六七八九〇十]/g 先頭側の数字クラスは「百千」を含むが、横棒の後ろ側は「十」までで非対称(上流のまま)。
/([0-90-9一二三四五六七八九〇十百千]#{DASH.source})|(#{DASH.source})[0-90-9一二三四五六七八九〇十]/- BEFORE_CHOME =
JS: /(.+)(丁目?|番(町|地|丁)|条|軒|線|(の|ノ)町|地割)/(g フラグ無し)
/(.+)(丁目?|番(町|地|丁)|条|軒|線|(の|ノ)町|地割)/- BEFORE_KU_GUN =
JS: /(.+)((郡.+(町|村))|((市|巿).+(区|區)))/(g フラグ無し)
/(.+)((郡.+(町|村))|((市|巿).+(区|區)))/- BEFORE_FIRST_NUMBER_DASH =
JS: /.+?[0-9一二三四五六七八九〇十百千]-/(g フラグ無し)
/.+?[0-9一二三四五六七八九〇十百千]-/
Class Method Summary collapse
-
.prenormalize(input) ⇒ Object
JS: prenormalize(input) /g 有無を厳守する(前半 4 つは g=gsub、後半 3 つは g 無し=sub)。.
Instance Method Summary collapse
Class Method Details
.prenormalize(input) ⇒ Object
JS: prenormalize(input) /g 有無を厳守する(前半 4 つは g=gsub、後半 3 つは g 無し=sub)。
34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/japanese_address_parser/normalize_helpers.rb', line 34 def prenormalize(input) input .unicode_normalize(:nfc) .gsub(/ /, ' ') .gsub(/ +/, ' ') .gsub(/([0-9A-Za-z]+)/) { |match| Zen2han.call(match) } .gsub(NUMBER_ADJACENT_DASH) { |match| match.gsub(DASH, '-') } .sub(BEFORE_CHOME) { |match| match.gsub(/ /, '') } .sub(BEFORE_KU_GUN) { |match| match.gsub(/ /, '') } .sub(BEFORE_FIRST_NUMBER_DASH) { |match| match.gsub(/ /, '') } end |
Instance Method Details
#self?.prenormalize ⇒ String
10 |
# File 'sig/normalize_helpers.rbs', line 10
def self?.prenormalize: (String input) -> String
|