class Klang::Klang

Constants

CONSONANT
PATCHIM
VOWEL

Public Class Methods

hangul?(char) click to toggle source
# File lib/klang.rb, line 80
def self.hangul?(char)
  o = char.ord
  ((o >= 0x1100 && o <= 0x11FF) ||
    (o >= 0xA960 && o <= 0xA97F) ||
    (o >= 0xD7B0 && o <= 0xD7FF) ||
    (o >= 0x3130 && o <= 0x318F) ||
    (o >= 0xAC00 && o <= 0xD7AF))
end
new(str) click to toggle source
# File lib/klang.rb, line 89
def initialize(str)
  @raw = str
  @alphabet = nil
end

Public Instance Methods

to_alphabet() click to toggle source
# File lib/klang.rb, line 94
def to_alphabet
  parse_hangul unless @alphabet
  @alphabet
end

Private Instance Methods

parse_hangul() click to toggle source
# File lib/klang.rb, line 100
def parse_hangul
  alpha = []
  @raw.each_char do |c|
    unless Klang.hangul?(c)
      alpha << c
      next
    end
    consonant, vowel, patchim = Unicode::nfkd(c).chars
    alpha << CONSONANT[consonant.ord]                       if consonant
    alpha << VOWEL[vowel.ord]                               if vowel
    alpha << PATCHIM[patchim.ord] || CONSONANT[patchim.ord] if patchim
  end
  @alphabet = alpha.join
end