ruby-trunk-changes r48304 - r48313

今日は Symbol#inspect でエンコーディングに不正なバイト列があった時に例外にならないようにする変更などがありました。

nobu: r48304 2014-11-06 23:54:39 +0900

tool/generic_erb.rb で ERB.new の第3引数 trim_mode に "%-" を渡して、値を展開した時に前後の空白を除去するようにしています。

nobu: r48305 2014-11-06 23:55:20 +0900

Symbol#inspect などで使われる sym_printable() でエンコーディングに対して不正なバイト列があっても例外を発生せず FALSE を返すようにしています。
なるほど、確かに

"\xff".force_encoding("UTF-8").inspect

は例外は発生しませんが

"\xff".force_encoding("UTF-8").to_sym.inspect

は EncodingError を発生させますね。

nobu: r48306 2014-11-06 23:55:44 +0900

Array#pack のテストで不明な指示文字があった時に警告が発生することを確認するテストを追加しています。

nobu: r48307 2014-11-06 23:58:43 +0900

Array#pack の指示文字列に printable でない文字が含まれていた時に警告メッセージで \x?? の記法で表示するようにしたり、元の文字列のエンコーディングを保持したメッセージを作るようにしています。

nobu: r48308 2014-11-07 00:00:14 +0900

lib/unicode_normalize/normalize.rb で Array#join に引数を明示していないところがあったので明示的に空文字列を指定するようにしています。 引数が省略されると $, が使われるので、ライブラリだとアプリの変更の影響を受けてしまってまずいので明示的に指定したほうがいいみたいです。なるほど。

nobu: r48309 2014-11-07 00:00:17 +0900

標準添付ライブラリ unicode_normalize の文字列への追加を += から << にしたり少し記法や利用する文法を変更したりする細かな変更。

svn: r48310 2014-11-07 00:00:18 +0900

version.h の日付更新。

nobu: r48311 2014-11-07 00:00:24 +0900

lib/unicode_normalize/normalize.rb と template/unicode_norm_gen.tmpl のリファクタリング。 str.chars.map! を使って式を簡略化したりなど。この kompatible_table って変数名はわざと k になってるんですかね。

hone: r48312 2014-11-07 12:09:28 +0900

r48280 の ChangeLogtypo 修正……なんですが、ここの NUL は NULL の typo じゃなくて終端文字、NUL文字(1バイトだと '\0')のことで多分 NUL でいいと思います。

nobu: r48313 2014-11-07 14:46:49 +0900

r48312 の ChangeLog の変更を元に戻しています。やっぱり NUL は '\0' のことでした。