浅草 jpmobile 会議 なる場で、Ruby 1.9 で絵文字変換したいときはどうすることになるのか説明せよというので、資料として書く。
利用者側がどう使うかは Ruby M17N の設計と実装 や るりま の String#encode や Encoding、Encoding::Converter クラスあたりを見てください。
で、実装の話です。
- Encoding を司るのは encoding.c
- 各Encoding の本体は enc/*.c
- 変換器を司るのは transcode.c
- 各変換器の本体は enc/trans/*.trans
- 各変換テーブルは enc/trans/*-tbl.rb
つまり、
- 各ケータイ文字コードに対応する encoding のファイルを作る
(実は CP932 や UTF-8 のレプリカで良い (ENC_REPLICATE)) - それぞれの encoding から UTF-8 への変換器・変換テーブルを作る
で、よいわけです。
それぞれのファイルの記述方法は、見ればわかる、とでもしておきましょうか。解説が必要だとしたら、Redmine の Wiki かどこかに書かれるべきなのでしょうが。