Project

General

Profile

Actions

Bug #402

closed

default_external depends on the order of -K and -E

Added by sheepman (Takashi Tamura) over 16 years ago. Updated over 13 years ago.

Status:
Closed
Target version:
-
ruby -v:
Backport:
[ruby-dev:35745]

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

Actions #1

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

=end

Actions #2

Updated by yugui (Yuki Sonoda) over 16 years ago

=begin
Yuguiです。

NARUSE, Yui さんは書きました:

ただ、-K と -E は本来同時指定するものではないように思うので、
「仕様」としては、同時指定の場合の動作は未定義、でもいいかもしれませんが。

同時に指定した場合と複数回指定した場合は「未定義」に一票

--
Yugui
http://yugui.jp
私は私をDumpする

=end

Actions #3

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

Actions #4

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

=end

Actions #5

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

=end

Actions #6

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

Actions #7

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

=end

Actions #8

Updated by ko1 (Koichi Sasada) over 16 years ago

  • Assignee set to naruse (Yui NARUSE)

=begin

=end

Actions #9

Updated by naruse (Yui NARUSE) about 16 years ago

=begin
-K は default source encoding と default_external を上書き、
-E は default_external を上書き、
後のものが優先、で行きましょう。
=end

Actions #10

Updated by naruse (Yui NARUSE) about 16 years ago

  • Category set to M17N
  • Status changed from Open to Closed

=begin

=end

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0