Bug #402
closeddefault_external depends on the order of -K and -E
Description
=begin
こんにちは sheepman です。
Encoding.default_external は -K オプションと -E オプションの
順番に依存するようですが、こういうものなんでしょうか。
$ ruby-1.9 -v
ruby 1.9.0 (2008-08-03 revision 17593) [i686-linux]
$ ruby-1.9 -Ke -Eutf-8 -e 'p Encoding.default_external'
#Encoding:UTF-8
$ ruby-1.9 -Eutf-8 -Ke -e 'p Encoding.default_external'
#Encoding:EUC-JP
--
sheepman / TAMURA Takashi
=end
Updated by naruse (Yui NARUSE) over 16 years ago
=begin
成瀬です。
sheepman wrote:
こんにちは sheepman です。
Encoding.default_external は -K オプションと -E オプションの
順番に依存するようですが、こういうものなんでしょうか。$ ruby-1.9 -v
ruby 1.9.0 (2008-08-03 revision 17593) [i686-linux]$ ruby-1.9 -Ke -Eutf-8 -e 'p Encoding.default_external'
#Encoding:UTF-8$ ruby-1.9 -Eutf-8 -Ke -e 'p Encoding.default_external'
#Encoding:EUC-JP
わたしの理解では、
- -K と -E の優先度は同一
- ゆえに、後のもので上書き
です。
ただ、-K と -E は本来同時指定するものではないように思うので、
「仕様」としては、同時指定の場合の動作は未定義、でもいいかもしれませんが。
--
NARUSE, Yui naruse@airemix.jp
=end
Updated by yugui (Yuki Sonoda) over 16 years ago
=begin
Yuguiです。
NARUSE, Yui さんは書きました:
ただ、-K と -E は本来同時指定するものではないように思うので、
「仕様」としては、同時指定の場合の動作は未定義、でもいいかもしれませんが。
同時に指定した場合と複数回指定した場合は「未定義」に一票
--
Yugui yugui@yugui.jp
http://yugui.jp
私は私をDumpする
=end
Updated by kouji (Kouji Takao) over 16 years ago
=begin
高尾宏治です。
On 2008/08/03, at 17:59, Yugui (Yuki Sonoda) wrote:
NARUSE, Yui さんは書きました:
ただ、-K と -E は本来同時指定するものではないように思うので、
「仕様」としては、同時指定の場合の動作は未定義、でもいいかもしれませんが。同時に指定した場合と複数回指定した場合は「未定義」に一票
どちらを優先するとかいう意見はないのですが、
rubyの仕様として未定義とする場合、Rubyのユーザへの説明が面倒とか、
テストが書けないという問題はないでしょうか。
私のこれまでの経験だと定義しておいたほうが楽という認識があります。
=end
Updated by naruse (Yui NARUSE) over 16 years ago
=begin
成瀬です。
Takao Kouji wrote:
高尾宏治です。
On 2008/08/03, at 17:59, Yugui (Yuki Sonoda) wrote:
NARUSE, Yui さんは書きました:
ただ、-K と -E は本来同時指定するものではないように思うので、
「仕様」としては、同時指定の場合の動作は未定義、でもいいかもしれませんが。
同時に指定した場合と複数回指定した場合は「未定義」に一票どちらを優先するとかいう意見はないのですが、
rubyの仕様として未定義とする場合、Rubyのユーザへの説明が面倒とか、
テストが書けないという問題はないでしょうか。
私のこれまでの経験だと定義しておいたほうが楽という認識があります。
ふーむ、それだととりあえず例外ですかねぇ。
--- ruby.c (revision 18324)
+++ ruby.c (working copy)
@@ -792,6 +792,8 @@ proc_options(int argc, char **argv, stru
}
if (enc_name) {
opt->src.enc.name = rb_str_new2(enc_name);
-
if (opt->ext.enc.name)
-
rb_raise(rb_eRuntimeError, "duplicate argument for default external"); opt->ext.enc.name = opt->src.enc.name; } s++;
@@ -878,6 +880,8 @@ proc_options(int argc, char **argv, stru
}
}
encoding:
-
if (opt->ext.enc.name)
-
rb_raise(rb_eRuntimeError, "duplicate argument for default external"); opt->ext.enc.name = rb_str_new2(s); } else if (strcmp("version", s) == 0)
--
NARUSE, Yui naruse@airemix.jp
=end
Updated by duerst (Martin Dürst) over 16 years ago
=begin
At 17:59 08/08/03, you wrote:
Yuguiです。
NARUSE, Yui さんは書きました:
ただ、-K と -E は本来同時指定するものではないように思うので、
「仕様」としては、同時指定の場合の動作は未定義、でもいいかもしれませんが。同時に指定した場合と複数回指定した場合は「未定義」に一票
こちらも一票ですが、最近の RubySpec の「何でもはっきり決める」
にはどうやって伝えればいいでしょうか。
宜しくお願いします。 Martin.
#-#-# Martin J. Du"rst, Assoc. Professor, Aoyama Gakuin University
#-#-# http://www.sw.it.aoyama.ac.jp mailto:duerst@it.aoyama.ac.jp
=end
Updated by nobu (Nobuyoshi Nakada) over 16 years ago
=begin
なかだです。
At Sun, 3 Aug 2008 21:13:27 +0900,
NARUSE, Yui wrote in [ruby-dev:35750]:
On 2008/08/03, at 17:59, Yugui (Yuki Sonoda) wrote:
NARUSE, Yui さんは書きました:
ただ、-K と -E は本来同時指定するものではないように思うので、
「仕様」としては、同時指定の場合の動作は未定義、でもいいかもしれませんが。
同時に指定した場合と複数回指定した場合は「未定義」に一票
最後を優先に一票。
現在-Iのように複数回指定したものがすべて有効になるオプション以外
はすべて最後のみが有効です。あえて-Kと-Eだけを互換性を捨てて違う
動作を追加する必然はないように思います。
どちらを優先するとかいう意見はないのですが、
rubyの仕様として未定義とする場合、Rubyのユーザへの説明が面倒とか、
テストが書けないという問題はないでしょうか。
私のこれまでの経験だと定義しておいたほうが楽という認識があります。ふーむ、それだととりあえず例外ですかねぇ。
RUBYOPTをコマンドラインで上書きできなくなります。
--
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
中田 伸悦
=end
Updated by naruse (Yui NARUSE) over 16 years ago
=begin
Nobuyoshi Nakada wrote:
なかだです。
At Sun, 3 Aug 2008 21:13:27 +0900,
NARUSE, Yui wrote in [ruby-dev:35750]:On 2008/08/03, at 17:59, Yugui (Yuki Sonoda) wrote:
NARUSE, Yui さんは書きました:
ただ、-K と -E は本来同時指定するものではないように思うので、
「仕様」としては、同時指定の場合の動作は未定義、でもいいかもしれませんが。
同時に指定した場合と複数回指定した場合は「未定義」に一票最後を優先に一票。
これって、-K euc-jp -E utf-8 の時には、
- script encoding のデフォルトは EUC-JP
- default external は UTF-8
になるんですかね。
-E の意味が増えた場合にこのあたりのルールが複雑化するのが少し怖いのです。
まぁ、-E が入出力しか含まない分は安心なのですが。
現在-Iのように複数回指定したものがすべて有効になるオプション以外
はすべて最後のみが有効です。あえて-Kと-Eだけを互換性を捨てて違う
動作を追加する必然はないように思います。どちらを優先するとかいう意見はないのですが、
rubyの仕様として未定義とする場合、Rubyのユーザへの説明が面倒とか、
テストが書けないという問題はないでしょうか。
私のこれまでの経験だと定義しておいたほうが楽という認識があります。
ふーむ、それだととりあえず例外ですかねぇ。RUBYOPTをコマンドラインで上書きできなくなります。
なるほど。
--
NARUSE, Yui naruse@airemix.jp
=end
Updated by naruse (Yui NARUSE) over 16 years ago
=begin
-K は default source encoding と default_external を上書き、
-E は default_external を上書き、
後のものが優先、で行きましょう。
=end
Updated by naruse (Yui NARUSE) about 16 years ago
- Category set to M17N
- Status changed from Open to Closed
=begin
=end