ruby-trunk-changes r36690 - r36700

今日は CGI のシングルクオートのエスケープ文字の変更と、 inspect と to_s の関係の変更がありました。 to_s を再定義しても inspect が自動的に追随することはなくなります。地味に影響がありそうなので 2.0 を追いかけている人はちょっと頭に置いておくとよさそうです。

naruse:r36690 2012-08-14 11:01:05 +0900

r36687 の ERB のエスケープ処理を CGI.escapeHTML を呼び出すようにしたところで引数を渡す前に to_s を呼んで文字列化しておくように修正しています。

svn:r36691 2012-08-14 11:01:10 +0900

version.h の日付更新。

xibbar:r36692 2012-08-14 12:03:42 +0900

昨日予告していたように CGI.escapeHTML でシングルクオートのエスケープには ' ではなくて ' を利用するように変更しています。 HTML4 に存在しないためです。 [Bug #6850]

usa:r36693 2012-08-14 15:39:46 +0900

Windows 環境でドライブのルートフォルダ(と言うのでしょうか)、たとえば C:/ とか C:/. とか C:/.. という表現は File で取り扱えるけど C:/... というのは Errno::ENOENT になるというテストを追加しています。 [ruby-core:47103] [Bug #6851]

naruse:r36694 2012-08-14 15:52:41 +0900

CGI のテストの未初期化のインスタンス変数や未使用のローカル変数への代入など警告の抑制。

usa:r36695 2012-08-14 16:03:18 +0900

Windows 環境でピリオド3つを prefix にもつフォルダ名が取り扱えることを確認するテストを追加しています。これも [Bug #6851] の関係だと思います。

usa:r36696 2012-08-14 16:05:12 +0900

Windows で "..." というディレクトリ名を禁止する(Errno::ENOENT にする)ようにしています。 実際には "." が4つやそれ以上連続する(だけで他の文字が含まれない)のもだめなようです。 ちなみに Linux/Mac では "..." というディレクトリは作れるのですが Windows では作れないということでしょうか。 [ruby-core:47103] [Bug #6851]

shugo:r36698 2012-08-14 16:28:43 +0900

ERB::Util.html_escape に String 以外のオブジェクトが渡された時も文字列化される挙動を確認するテストを追加しています。 r36690 の修正に対するテストです。

eregon:r36699 2012-08-14 19:20:44 +0900

このチケット完全に見落していたのですが Object#inspect (やその他組み込みクラスで再定義されている inspect)が内部で to_s を呼ぶのではなく to_s の alias になります。つまり to_s を再定義しても自動的に inspect の結果が変化するとことはなく、独立して元の実装を引き継ぐようになっています。 正確には Object#inspect は Object#to_s の alias ではなくてインスタンス変数がないときの挙動が to_s メソッドを動的に呼ぶのではなくて rb_any_to_s() という C の実装を直接呼ぶようになっています。これは結構地味に大きな変更ですねー。意外なところで影響を受ける人が居そうです。 [ruby-core:43238] [Feature #6130]

eregon:r36700 2012-08-14 19:21:04 +0900

標準ライブラリの PP (pretty print ライブラリ)の挙動を inspect の変更に合わせて to_s を呼ぶ処理を抜くようにしています。 [ruby-core:43238] [Feature #6130]