Ruby / Rails で全角・半角をいい感じに変換しよう!

全角英数字を半角英数字に、半角カナを全角カナに変換する gem を作りました。

使い方

$ gem install charwidth

でインストールして require "charwidth" で使えます。

require "charwidth"
Charwidth.normalize("Hello, World!") # => "Hello, World!"
Charwidth.normalize!("Hello, World!") # 破壊的に変換
Charwidth.normalize("「ハローワールド」") # => "「ハローワールド」"

require "charwidth/string" とすると、String を拡張します。

require "charwidth/string"
"Hello, World!".normalize_charwidth # => "Hello, World!"
"Hello, World!".normalize_charwidth! # => 破壊的に変換
"「ハローワールド」".normalize_charwidth # => "「ハローワールド」"

Rails なら require "charwidth/active_record" とすると、モデルの attribute を代入する際に自動的に変換するようになります (write_attribute を alias_method_chain してます)。

require "charwidth/active_record"

class Article < ActiveRecord::Base
end

a = Article.new(title: "Hello, World!")
a.title # => "Hello, World!"

ちょっとしたテキスト処理用に CLI もご用意しております。

# 引数か、
$ charwidth "Hello, World!"
Hello, World!
# 標準入力で渡してください
$ echo "Hello, World!" | charwidth
Hello, World!

情報源

Unicode には Halfwidth and Fullwidth Forms として定義されている文字があり、それぞれ対応する文字が挙げられているので、これを元に作成しました。