Module: JapaneseAddressParser::NormalizeHelpers

Defined in:
lib/japanese_address_parser/normalize_helpers.rb,
sig/normalize_helpers.rbs

Overview

入力住所に対する前正規化(prenormalize)。NFC 化・スペース正規化・全角英数の半角化・ 数字に隣接する各種横棒のハイフン統一・丁目/区郡/番地以前のスペース削除を行う。

Constant Summary collapse

DASH =

数字の前後で統一する横棒(ハイフン・マイナス・長音記号・罫線等)の文字クラス。

Returns:

  • (Regexp)
/[--﹣−‐⁃‑‒–—﹘―⎯⏤ーー─━]/
NUMBER_ADJACENT_DASH =

JS: /([0-90-9一二三四五六七八九〇十百千][横棒])|([横棒])[0-90-9一二三四五六七八九〇十]/g 先頭側の数字クラスは「百千」を含むが、横棒の後ろ側は「十」までで非対称(上流のまま)。

Returns:

  • (Regexp)
/([0-90-9一二三四五六七八九〇十百千]#{DASH.source})|(#{DASH.source})[0-90-9一二三四五六七八九〇十]/
BEFORE_CHOME =

JS: /(.+)(丁目?|番(町|地|丁)|条|軒|線|(の|ノ)町|地割)/(g フラグ無し)

Returns:

  • (Regexp)
/(.+)(丁目?|番(町|地|丁)|条|軒|線|(の|ノ)町|地割)/
BEFORE_KU_GUN =

JS: /(.+)((郡.+(町|村))|((市|巿).+(区|區)))/(g フラグ無し)

Returns:

  • (Regexp)
/(.+)((郡.+(町|村))|((市|巿).+(区|區)))/
BEFORE_FIRST_NUMBER_DASH =

JS: /.+?[0-9一二三四五六七八九〇十百千]-/(g フラグ無し)

Returns:

  • (Regexp)
/.+?[0-9一二三四五六七八九〇十百千]-/

Class Method Summary collapse

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?.prenormalizeString

Parameters:

  • input (String)

Returns:

  • (String)


10
# File 'sig/normalize_helpers.rbs', line 10

def self?.prenormalize: (String input) -> String