半角文字を全角文字に変換する

UTF-8環境で半角文字を全角文字に変換するものを書いてみました。

module StringUtil

  def self.append_features(klass)
    super
    klass.class_eval do
      klass.extend ClassMethods
    end
  end

  module ClassMethods
    def han2zen(text, nonkana = true) 
     
      require "jcode" # String#tr関数でカナを扱うために必要。
     
      text = NKF.nkf('-XWw', text)

      # nonkanaがtrueなら半角の英数字記号および記号を全角に置き換える。
      # ASCII文字コード表によるとこれらはすべて/!-~/という正規表現で
      # カバーできる。空白文字は一括して全角スペースで置き換え。
      text = text.tr("!-~\s", "!-〜 ") if nonkana
      return text
    end
  end
end

とりあえず、modelの下にstring_util.rbってなダサい名前で置いたのですが、
どうにも落ち着きません。