lib/gimchi/char.rb in gimchi-0.1.6 vs lib/gimchi/char.rb in gimchi-0.1.7

- old
+ new

@@ -1,123 +1,123 @@ # encoding: UTF-8 module Gimchi class Korean - # Class representing each Korean character. Its three components, - # `chosung', `jungsung' and `jongsung' can be get and set. - # - # `to_s' merges components into a String. `to_a' returns the three components. - class Char - # @return [String] Chosung component of this character. - attr_reader :chosung - # @return [String] Jungsung component of this character. - attr_reader :jungsung - # @return [String] Jongsung component of this character. - attr_reader :jongsung + # Class representing each Korean character. Its three components, + # `chosung', `jungsung' and `jongsung' can be get and set. + # + # `to_s' merges components into a String. `to_a' returns the three components. + class Char + # @return [String] Chosung component of this character. + attr_reader :chosung + # @return [String] Jungsung component of this character. + attr_reader :jungsung + # @return [String] Jongsung component of this character. + attr_reader :jongsung - # @param [Gimchi::Korean] kor Gimchi::Korean instance - # @param [String] kchar Korean character string - def initialize kor, kchar - raise ArgumentError('Not a korean character') unless kor.korean_char? kchar + # @param [Gimchi::Korean] kor Gimchi::Korean instance + # @param [String] kchar Korean character string + def initialize kor, kchar + raise ArgumentError('Not a korean character') unless kor.korean_char? kchar - @kor = kor - @cur = [] - if @kor.complete_korean_char? kchar - c = kchar.unpack('U').first - n = c - 0xAC00 - # '가' ~ '깋' -> 'ㄱ' - n1 = n / (21 * 28) - # '가' ~ '깋'에서의 순서 - n = n % (21 * 28) - n2 = n / 28; - n3 = n % 28; - self.chosung = @kor.chosungs[n1] - self.jungsung = @kor.jungsungs[n2] - self.jongsung = ([nil] + @kor.jongsungs)[n3] - elsif @kor.chosungs.include? kchar - self.chosung = kchar - elsif @kor.jungsungs.include? kchar - self.jungsung = kchar - elsif @kor.jongsungs.include? kchar - self.jongsung = kchar - end - end + @kor = kor + @cur = [] + if @kor.complete_korean_char? kchar + c = kchar.unpack('U').first + n = c - 0xAC00 + # '가' ~ '깋' -> 'ㄱ' + n1 = n / (21 * 28) + # '가' ~ '깋'에서의 순서 + n = n % (21 * 28) + n2 = n / 28; + n3 = n % 28; + self.chosung = @kor.chosungs[n1] + self.jungsung = @kor.jungsungs[n2] + self.jongsung = ([nil] + @kor.jongsungs)[n3] + elsif @kor.chosungs.include? kchar + self.chosung = kchar + elsif @kor.jungsungs.include? kchar + self.jungsung = kchar + elsif @kor.jongsungs.include? kchar + self.jongsung = kchar + end + end - # Recombines components into a korean character. - # @return [String] Combined korean character - def to_s - if chosung.nil? && jungsung.nil? - "" - elsif chosung && jungsung - n1, n2, n3 = - n1 = @kor.chosungs.index(chosung) || 0 - n2 = @kor.jungsungs.index(jungsung) || 0 - n3 = ([nil] + @kor.jongsungs).index(jongsung) || 0 - [ 0xAC00 + n1 * (21 * 28) + n2 * 28 + n3 ].pack('U') - else - chosung || jungsung - end - end + # Recombines components into a korean character. + # @return [String] Combined korean character + def to_s + if chosung.nil? && jungsung.nil? + "" + elsif chosung && jungsung + n1, n2, n3 = + n1 = @kor.chosungs.index(chosung) || 0 + n2 = @kor.jungsungs.index(jungsung) || 0 + n3 = ([nil] + @kor.jongsungs).index(jongsung) || 0 + [ 0xAC00 + n1 * (21 * 28) + n2 * 28 + n3 ].pack('U') + else + chosung || jungsung + end + end - # Sets the chosung component. - # @param [String] - def chosung= c - raise ArgumentError.new('Invalid chosung component') if - c && @kor.chosungs.include?(c) == false - @chosung = c && c.dup.extend(Component).tap { |e| e.kor = @kor } - end + # Sets the chosung component. + # @param [String] + def chosung= c + raise ArgumentError.new('Invalid chosung component') if + c && @kor.chosungs.include?(c) == false + @chosung = c && c.dup.extend(Component).tap { |e| e.kor = @kor } + end - # Sets the jungsung component - # @param [String] - def jungsung= c - raise ArgumentError.new('Invalid jungsung component') if - c && @kor.jungsungs.include?(c) == false - @jungsung = c && c.dup.extend(Component).tap { |e| e.kor = @kor } - end + # Sets the jungsung component + # @param [String] + def jungsung= c + raise ArgumentError.new('Invalid jungsung component') if + c && @kor.jungsungs.include?(c) == false + @jungsung = c && c.dup.extend(Component).tap { |e| e.kor = @kor } + end - # Sets the jongsung component - # - # @param [String] - def jongsung= c - raise ArgumentError.new('Invalid jongsung component') if - c && @kor.jongsungs.include?(c) == false - @jongsung = c && c.dup.extend(Component).tap { |e| e.kor = @kor } - end + # Sets the jongsung component + # + # @param [String] + def jongsung= c + raise ArgumentError.new('Invalid jongsung component') if + c && @kor.jongsungs.include?(c) == false + @jongsung = c && c.dup.extend(Component).tap { |e| e.kor = @kor } + end - # Returns Array of three components. - # - # @return [Array] Array of three components - def to_a - [chosung, jungsung, jongsung] - end + # Returns Array of three components. + # + # @return [Array] Array of three components + def to_a + [chosung, jungsung, jongsung] + end - # Checks if this is a complete Korean character. - def complete? - chosung.nil? == false && jungsung.nil? == false - end + # Checks if this is a complete Korean character. + def complete? + chosung.nil? == false && jungsung.nil? == false + end - # Checks if this is a non-complete Korean character. - # e.g. ㅇ, ㅏ - def partial? - chosung.nil? || jungsung.nil? - end + # Checks if this is a non-complete Korean character. + # e.g. ㅇ, ㅏ + def partial? + chosung.nil? || jungsung.nil? + end - private - # Three components of Korean::Char are extended to support #vowel? and #consonant? method. - module Component - # @return [Korean] Hosting Korean instance - attr_accessor :kor + private + # Three components of Korean::Char are extended to support #vowel? and #consonant? method. + module Component + # @return [Korean] Hosting Korean instance + attr_accessor :kor - # Is this component a vowel? - def vowel? - kor.jungsungs.include? self - end + # Is this component a vowel? + def vowel? + kor.jungsungs.include? self + end - # Is this component a consonant? - def consonant? - self != 'ㅇ' && kor.chosungs.include?(self) - end - end#Component - end#Char + # Is this component a consonant? + def consonant? + self != 'ㅇ' && kor.chosungs.include?(self) + end + end#Component + end#Char end#Korean end#Gimchi