Module: JapaneseAddressParser::PatchAddr
- Defined in:
- lib/japanese_address_parser/patch_addr.rb,
sig/patch_addr.rbs
Overview
特定の町について番地表記のゆれを補正する 3 パッチを適用する。
Constant Summary collapse
- ADDR_PATCHES =
JS の addrPatches。pattern は上流では '^字?家[6六]' のように
^始端アンカーを使う。 JS の^(m フラグ無し)は「文字列先頭」を指すが、Ruby の^は「行頭」を指すため、 文字列先頭の意味を保つには\Aへ翻訳する必要がある(working_agreement §3-4 の JS↔Onigmo 差異。挙動の忠実性を優先し^→\Aと訳す)。 [ { pref: '香川県', city: '仲多度郡まんのう町', town: '勝浦', pattern: '\A字?家[6六]', result: '家六' }, { pref: '愛知県', city: 'あま市', town: '西今宿', pattern: '\A字?梶村[1一]', result: '梶村一' }, { pref: '香川県', city: '丸亀市', town: '原田町', pattern: '\A字?東三分[1一]', result: '東三分一' } ].freeze
Class Method Summary collapse
-
.call(pref_name, city_name, town_name, addr) ⇒ Object
JS: patchAddr(prefName, cityName, townName, addr) JS は param を直接変更しないよう
let _addr = addrを使うが、Ruby では仮引数 addr を再代入して同じ動作にする(_addr 接頭辞は Lint/UnderscorePrefixedVariableName)。.
Instance Method Summary collapse
Class Method Details
.call(pref_name, city_name, town_name, addr) ⇒ Object
JS: patchAddr(prefName, cityName, townName, addr)
JS は param を直接変更しないよう let _addr = addr を使うが、Ruby では仮引数
addr を再代入して同じ動作にする(_addr 接頭辞は Lint/UnderscorePrefixedVariableName)。
26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/japanese_address_parser/patch_addr.rb', line 26 def call(pref_name, city_name, town_name, addr) ADDR_PATCHES.each do |patch| next unless patch[:pref] == pref_name && patch[:city] == city_name && patch[:town] == town_name # JS: _addr.replace(new RegExp(patch.pattern), patch.result) # new RegExp は g フラグ無し(最初の 1 件のみ)なので sub。result は literal。 addr = addr.sub(::Regexp.new(patch[:pattern]), patch[:result]) end addr end |
Instance Method Details
#self?.call ⇒ String
6 |
# File 'sig/patch_addr.rbs', line 6
def self?.call: (String pref_name, String city_name, String town_name, String addr) -> String
|