From: "Yugui (Yuki Sonoda)" Date: 2008-12-07T11:41:42+09:00 Subject: [ruby-dev:37293] Re: m17n of irb Yuguiです。 Yukihiro Matsumoto さんは書きました: > まずsource encodingについては > > * loadはmagic commentを理解します > * evalはソース文字列のencodingをsource encodingとして解釈 > するので、文字列のencodingを適切に設定すればdefault > source encodingを指定する必要はないのでは > > とすると、loadでmagic commentがついてないファイルをUS-ASCII > 以外として読み込みたいというかなりレアケース以外では特別な対 > 応は不要ではないでしょうか。そのようなケースでもソースを読み > 込んでencodingを設定してevalすればよいわけですし。 問題なのはirbやerbで-Kを指定して、その中でmagic commentの付いていない ファイルをloadするというレアなケースだけです。 -Kはもともと1.8互換性のためのものと理解していますから、irbやerbではサ ポートの必要なしというのも1つの選択肢です。一方、irbができるだけrubyコ マンドのように振る舞うことを期待するならば、irbのためだけにはscript encodingを設定できないと困ります。 では残りのdefault_externalとdefault_internalについて。 私は、デフォルト、特にdefault_internalが起動後に変化するのは危険だと思っ てます。既に述べたように開いてしまったリソースがあるかもしれませんし、ラ イブラリにむやみに設定して欲しくありません。 ただ、irbのように確かにそれを必要とする事例があるわけです。我々の想像の 及ばない似たようなケースが存在するかもしれません。だから、default_ {internal,external}のsetterを付けるかどうかと言うのは、どの程度「自分の 足を撃ち抜く自由」を認めるかという問題です。 勿論まつもとさん次第ですけれども、認めちゃって良いんですか? == 現状 * irb -K, erb -Kは必要か? YES => script encodingの設定方法が必要(RubyレベルかC APIかは別) NO => 問題なし * エンコーディングのデフォルトをRubyレベルで変更できるべきか? YES => setterメソッド追加で解決 NO => IRB.parse_optsの拡張ライブラリ化で解決 この判断をまつもとさんにお願いしたく思います。 -- Yugui http://yugui.jp 私は私をDumpする