-
Notifications
You must be signed in to change notification settings - Fork 1
/
util.rb
17 lines (16 loc) · 1.51 KB
/
util.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# ・濁点、半濁点、拗音、カタカナを、ひらがな清音に正規化。
# 例:が→か ぽ→ほ ヅ→つ ゃ→や
# ・アルファベット、数字の全角を、半角に正規化
# ・記号は除く
CANONICALIZE_FROM = 'がぎぐげござじずぜぞだぢづでどばびぶべぼぱぴぷぺぽゔぁぃぅぇぉゃゅょアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンガギグゲゴザジズゼゾダヂヅデドバビブベボパピプペポヴァィゥェォャュョABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'
CANONICALIZE_TO = 'かきくけこさしすせそたちつてとはひふへほはひふへほうあいうえおやゆよあいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわをんかきくけこさしすせそたちつてとはひふへほはひふへほうあいうえおやゆよABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'
def canonicalize_initial str
return nil if str.nil? || str.empty?
canonicalize_to_kana(str)[0]
end
def canonicalize_to_kana str
return nil if str.nil?
str
.gsub(/[「」『』()〔〕【】〈〉[]“”‘’\(\)\{\}\[\]・@#$%*!?+=@#$%\*\!\?\+=]/, "")
.tr(CANONICALIZE_FROM, CANONICALIZE_TO)
end