全角英数字を半角英数字に、半角カナを全角カナに変換する 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 として定義されている文字があり、それぞれ対応する文字が挙げられているので、これを元に作成しました。