よたらぼ
自分の興味の赴くままにIT技術系のネタを取りとめもなくメモっています。
Ruby言語やLinuxのネタが多いです。

April 29, 2006 [おもひで]

[Ruby] String%の挙動

String%がrubyの起動オプションによって挙動が違うのでびっくりした。

% ruby -v
ruby 1.8.4 (2005-12-24) [i686-linux]
% cat test.rb
p "foo" % 1
% ruby test.rb
"foo"
%ruby -w test.rb
test.rb:1: warning: too many arguments for format string
"foo"
% ruby -d test.rb
Exception `ArgumentError' at test.rb:1 - too many arguments for format string
test.rb:1:in `%': too many arguments for format string (ArgumentError)
        from test.rb:1

Ruby-GetText-Packageでは、言語によってリソースファイルで意図的に%?をなくす場合がある。"There are %d files."を文脈によって"ファイルがあります。"だけにしたい、とか。まぁ、どこまで忠実にオリジナルの文章を再現するのかは翻訳者の好みとか方針とかが絡んでくるけど。
で、そうなると、上記の-dと-dなしの挙動の違いは非常に気持ち悪い。というか-dでも-w相当で動いてくれないと困る。

ということで、-dを-w相当にして欲しいなぁ、ということをruby-devに流そうかとも思ったんだけど、rubyのソースコード見たら明らかに意図的にやっているのであきらめることにした。Ruby-GetText-PackageではちょうどString%を拡張しているのでそこでは-dを-w相当にしてしまおう。

・・・Rubyってオリジナルの挙動を変更できちゃうから、いろんな方言ができちゃうねぇ。議論するのが面倒くさいなら実装しちゃうという。これはあまりよくない傾向かも。

#って言いつつruby-devには投げれない自分(苦笑)。

[Misc] SF.netのAnonymous CVS

またdevelop CVSからのsyncが止まってるよ・・・。


編集