#
#= 文字列変換
#
module Comm
  module Tool
    class CharUtil
    end
    $KCODE = 'u'
    class << CharUtil
      require 'nkf'
      def half_kana_to_full(str)
        Rails.logger.debug("org: "+str)
        converted = NKF::nkf('-WwXm0', str)
        Rails.logger.debug("converted: "+converted)
        return converted
      end
      
      @@zenkaku_kana = %w(ガ ギ グ ゲ ゴ ザ ジ ズ ゼ ゾ ダ
         ヂ ヅ デ ド バ ビ ブ ベ ボ パ ピ プ ペ ポ ヴ ア イ
         ウ エ オ カ キ ク ケ コ サ シ ス セ ソ タ チ
         ツ テ ト ナ ニ ヌ ネ ノ ハ ヒ フ ヘ ホ マ ミ
         ム メ モ ヤ ユ ヨ ラ リ ル レ
         ロ ワ ヲ ン ャ ュ ョ ァ ィ ゥ ェ ォ ッ
          ゛ ゜ ー ！ ・).freeze
      
      @@hankaku_kana = %w(ｶﾞ ｷﾞ ｸﾞ ｹﾞ ｺﾞ ｻﾞ ｼﾞ ｽﾞ ｾﾞ ｿﾞ ﾀﾞ
         ﾁﾞ ﾂﾞ ﾃﾞ ﾄﾞ ﾊﾞ ﾋﾞ ﾌﾞ ﾍﾞ ﾎﾞ ﾊﾟ ﾋﾟ ﾌﾟ ﾍﾟ ﾎﾟ ｳﾞ ｱ ｲ
         ｳ ｴ ｵ ｶ ｷ ｸ ｹ ｺ ｻ ｼ ｽ ｾ ｿ ﾀ ﾁ ﾂ ﾃ ﾄ ﾅ ﾆ ﾇ ﾈ ﾉ
         ﾊ ﾋ ﾌ ﾍ ﾎ ﾏ ﾐ ﾑ ﾒ ﾓ ﾔ ﾕ ﾖ ﾗ ﾘ ﾙ ﾚ ﾛ ﾜ ｦ ﾝ ｬ ｭ
         ｮ ｧ ｨ ｩ ｪ ｫ ｯ ﾞ ﾟ ｰ ! ･).freeze
      
      def full_kana_to_half(str)
        Rails.logger.debug("org: "+str)
        converted = self.full_kana_to_half_real(str)
        Rails.logger.debug("converted: "+converted)
        return converted
      end
      
    protected
      def full_kana_to_half_real(str)
        str = str.clone
        self.filter(str, @@zenkaku_kana, @@hankaku_kana)
      end
      
      def filter(str, from, to)
        str = str.clone
        from.each_with_index do |int, i|
          str.gsub!(int, to[i])
        end
        return str
      end
    end
  end
end
