class Ununiga::JasoSplitter
한글 자소분리 클래스 1개의 한글 문자를 초성/중성/종성으로 분리한다.
Sample:
splitter = Ununiga::JasoSplitter.new('흯') splitter.extract_chosung # => 'ㅎ' splitter.extract_jungsung # => 'ㅢ' splitter.extract_jongsung # => 'ㄳ' splitter.split # => ['ㅎ', 'ㅢ', 'ㄳ'] # 종성이 없는 경우는 nil splitter2 = Ununiga::JasoSplitter.new('가') splitter2.extract_jongsung # => nil splitter2.split # => ['ㄱ', 'ㅏ', nil]
Constants
- CHOSUNGS
- JONGSUNGS
- JUNGSUNGS
- KR_OFFSET
- KR_RANGE
Attributes
kr_char[R]
Public Class Methods
new(kr_char)
click to toggle source
# File lib/ununiga/jaso_splitter.rb, line 27 def initialize(kr_char) fail ArgumentError, 'Argument must be single character' unless kr_char.size == 1 @kr_char = kr_char end
Public Instance Methods
extract_chosung()
click to toggle source
# File lib/ununiga/jaso_splitter.rb, line 36 def extract_chosung nil unless korean? CHOSUNGS[kr_relative_code / (JUNGSUNGS.size * JONGSUNGS.size)] end
extract_jongsung()
click to toggle source
# File lib/ununiga/jaso_splitter.rb, line 46 def extract_jongsung nil unless korean? JONGSUNGS[kr_relative_code % JONGSUNGS.size] end
extract_jungsung()
click to toggle source
# File lib/ununiga/jaso_splitter.rb, line 41 def extract_jungsung nil unless korean? JUNGSUNGS[kr_relative_code % (JUNGSUNGS.size * JONGSUNGS.size) / JONGSUNGS.size] end
korean?()
click to toggle source
# File lib/ununiga/jaso_splitter.rb, line 51 def korean? KR_RANGE.cover?(kr_code) end
split()
click to toggle source
# File lib/ununiga/jaso_splitter.rb, line 32 def split [extract_chosung, extract_jungsung, extract_jongsung] end
Private Instance Methods
kr_code()
click to toggle source
# File lib/ununiga/jaso_splitter.rb, line 61 def kr_code kr_char.unpack('U')[0] end
kr_relative_code()
click to toggle source
# File lib/ununiga/jaso_splitter.rb, line 65 def kr_relative_code kr_code - KR_OFFSET end