to_a

どうも、1.9ではto_aがStringやSymbolから使えなくなるようだ。OptionParserの666行目の*での展開が失敗するようになっている。make install-docでriのドキュメントの生成に失敗してしまう。とりあえずこんなかんじの完全無保証quick hackで凌ぐ。

Index: lib/optparse.rb
===================================================================
RCS file: /src/ruby/lib/optparse.rb,v
retrieving revision 1.73
diff -U2 -r1.73 optparse.rb
--- lib/optparse.rb     9 Oct 2006 14:41:24 -0000       1.73
+++ lib/optparse.rb     26 Nov 2006 16:38:51 -0000
@@ -664,7 +664,17 @@
     #
     def match(key)
+=begin
       return key, *fetch(key) {
         raise AmbiguousArgument, catch(:ambiguous) {return complete(key)}
       }
+=end
+      ret = fetch(key) {
+        raise AmbiguousArgument, catch(:ambiguous) {return complete(key)}
+      }
+      if ret.is_a? Array
+        return key, *ret
+      else
+        return key, ret
+      end
     end
   end

誰か偉い人がちゃんとそのうち直してくれるだろう。とりあえずみたいriのドキュメントがなんだったか忘れた。

追記:どう考えてもこのpatchはいけてない。complete()が配列返すべきなんだろうか。わかりません。*が使いづらい感じがするなぁ。

追記2: どうも*をはずすだけでいい気がしてきた。completeうまくいけば1個しか返らないし。しかし、自分では思いもよらないような書き方がいっぱいあって、勉強になる。

追記3: いやちがうかも。なんかいっぱい返すときがありそうだ。もっとちゃんと調べなきゃいかん。