作者: Yukihiro Matsumoto
日時: 2006/9/12(17:06)
まつもと ゆきひろです

In message "Re: [TSruby:204] 枯れ木も山の賑わい"
    on Tue, 12 Sep 2006 16:29:54 +0900 (JST), kbk@... (Bruce.) writes:

|Matzにっきの9/9のエントリで、名前によるキャラクタ指定(Perlでいうところ
|の \N{...} )をM17NしたRubyでも(Unicode使用時に限定して)導入するかもと
|ありましたが個々の文字はともかくとしても、「漢字」(さらに細かく言えば
|JIS第一水準、第二水準とか)を表すクラスとか、ひらがな、カタカナを
|あらわすそれは他のコードでも(正規表現のクラス指定で)使えてもいいんじゃ
|ないかあと思います。
|
|ただ、エンコーディングごとに「漢字」の範囲が違うとかいやらしいところも
|ありますがこういう意見もあるということで一つ。

これは多分ユーザメソッドで定義されると思いますから、純粋にそ
のようなメソッドを用意するかどうかだけではないかと思います。

  "abc#{uc"HALFWIDTH KATAKANA KA"}def"

のようなのをイメージしてください。ここではucが(uppercase(大
文字)ではなくunicode characterのつもり)文字名から文字を得る
メソッドになります。

|あと、これは小迫さんに云うべきことかもしれませんが、Perl 5.8.5から
|使えるようになった、ユーザー定義の文字クラス \p{...} (...の部分の
|名前とそれが表す集合をユーザーが定義できる)が欲しいです。
|鬼車単体では難しいと思うのでまつもとさんにも意見表明。

鬼車単体では難しいのかもしれませんが、やはり鬼車側がイニシア
チブをとらないと実現しないと思いますから、小迫さんが見てると
ころで話すのがよいのではないかと思います。

|それから質問が一つ。
|
|  s = "abc\p{HALFWIDTH KATAKANA KA}def"
|
|というASCII文字列があり(\p{…}は半角カナ文字を指定していると考えてください)、
|tounicode とかいうメソッド(があったとして)を送ると
|
|   uni = s.unicode
|
|その結果はどうなるのでしょうか?

正直なところ、質問の内容が定かではなくて答えようがないんです
が、仮定を積み重ねると、"abc\p{HALFWIDTH KATAKANA KA}def"と
いうものが私の考えているものと同じものであれば、文字列の中に
半角カナを含んでいる以上すでにASCII文字列ではないんではない
かと。その文字列のエンコーディングがUnicode(たとえばUTF-8)で
あったとするならば、tounicodeメソッドは「なにもしない」んじゃ
ないでしょうか。