まつもと ゆきひろです

In message "[ruby-list:9307] Re: 1byte-kana (Kconv class)"
    on 98/08/27, TAKAHASHI Masayoshi <maki / inac.co.jp> writes:

|高橋征義です。

|>  2. 現状のkconvはいわゆる「半角かな」に出会うと全角に変換し
|>     ようとします(この挙動を変更できません)
|
|……そうだったんですか。
|kconvって、元がnkfのようんですが、そのせいでそういう仕様なん
|でしょうか。

まあ,普通の場合にはJIS-X0201カナはいらないだろうと思ってこ
うなっているわけです.確かnkfのデフォルトの仕様でもあります
し.ただ,nkfの方はオプションでカナをそのまま通すように指定
できるのに,kconvの方にはそれを指定する方法がないというワケ
です.

|> p.s.
|> いろいろあるんでkconvはいつか全面的に書き換えたいんですが.
|
|どうすればいいんでしょうね。

先にも言ったようにいろいろあるんで,kconvに大きく手を入れた
い気持ちがあるので,ワタシ的にはその時にまとめて対応したいで
す.んで,とりあえずということであれば,高橋さんにお勧めなの
は「半角カナを理解するkconvを作る」ことです.

kconv.cの602行辺りのx0201_f = TRUEをFALSEに,624行付近の
x0201_f = TRUE; を削除すると半角カナをそのまま通すように出来
ると思います.

あとはこの新しいkconv.soをkkconv.soとかいうような別の名前で
インストールすれば出来上がりです.安易ですが.

将来的には

  * nkfでないものをベースにして(あるいはスクラッチから)
    JIS/SJIS/EUC-JPの相互変換を行うnew kconvを作る.この時に
    カナの扱いを指定できる仕様を考える

  * それとは別にtcsかなにかをベースにもっとたくさんのコード
    を相互変換できるモジュールを用意する.あるいはnew kconv
    はこのモジュールをベースにして作る.

とかいうようなことを考えています.が,それがいつかと聞かれる
と困るんですね.Ruby本の原稿が仕上らないと(あと本文は9章だけ
なんですが…),なんか落ち着いてプログラムできないってことに
しておいてください.

もっともコード変換や正規表現などは鬼門なので逃げてるってのも
本音なのですが.

                                まつもと ゆきひろ /:|)