ruby-trunk-changes 2022-02-22

今日は Exception#detailed_message というメソッドを新設して捕捉されない例外のメッセージの表示のためにこのメソッドを使うようにしてこのメソッド内で端末に出力する際のエスケープシーケンスによるハイライトなどの処理をするようにする変更などがありました。

[36e31b09cd] Yusuke Endoh 2022-02-01 06:58:39 UTC

error.c の exc_full_message() からキーワード引数に関する処理を check_highlight_keyword() と check_order_keyword() という関数に切り出すリファクタリング

[f207f7a193] Yusuke Endoh 2022-02-01 07:32:38 UTC

捕捉されない例外のメッセージを表示する時にバックスラッシュによるエスケープを解釈せずに表示するようにしています。 [ruby-core:106308] [Feature #18367]

[3af316fa8c] Yusuke Endoh 2022-02-01 08:03:58 UTC

eval_error.c の print_errinfo() からエラーメッセージをハイライト処理する部分を rb_decorate_message() という関数に切り出して show_cause() や rb_error_write() から呼ぶようにしています。逆に print_errinfo() からは呼ばれてないようなのでそっちはハイライトしなくなるみたいですね。

[35ff545bb6] Yusuke Endoh 2022-02-01 08:59:31 UTC

Exception#detailed_message メソッドを新規追加して捕捉されない例外のエラーを表示する時にこのメソッドを使ってメッセージを作るようにしています。Exception#message の結果に 3af316fa8c48e33c03159e3b0b3bef329e41dee8 で分離した rb_decorate_message() を読んで標準エラー出力が端末の時にハイライトするためのエスケープシーケンスを追加するようにしているようです。 [ruby-core:106347] [Feature #18370]

[98ca99cdd0] Yusuke Endoh 2022-02-02 06:08:10 UTC

36e31b09cddbadd6acc4becb83a8c4bddfb2af1fリファクタリングで切り出した check_highlight_keyword() に引数を追加して出力が tty かどうかのチェックをせずに常にハイライトオフにする指定もできるようにして、Exception#detailed_message のデフォルトをハイライトなしにするようにしています。

[89e446683e] Yusuke Endoh 2022-02-02 06:08:59 UTC

コマンドラインオプションについてのテストで Exception#detailed_message の導入により Windows で改行コードが変わるようになった? のを対応するようにマッチさせる正規表現を修正しています。

[4db986431a] Yusuke Endoh 2022-02-02 06:36:13 UTC

Exception#full_message から Exception#detailed_message を呼ぶ時にキーワード引数 highlight の指定を伝播させるようにしています。

[5099f64fa4] Yusuke Endoh 2022-02-02 06:49:13 UTC

98ca99cdd090d17b7ec11e0c6f40936a728165a5 で追加した Exception#detailed_message のテストを追加しています。

[eda10e8102] Yusuke Endoh 2022-02-02 07:05:18 UTC

3af316fa8c48e33c03159e3b0b3bef329e41dee8 で切り出した rb_decorate_message() で余分な改行の出力があったので削除しています。

[25b0577c92] Yusuke Endoh 2022-02-07 07:05:45 UTC

error.c でキーワード引数処理のために "highlight" という識別子の ID を static 変数にセットする処理があちこちにできたのでファイルグローバルな static 変数を導入して Init_Exception() で初期化しておくようにしています。

[7d81ee42ba] git 2022-02-22 02:56:03 UTC

version.h の日付更新

[a49aae2c5e] Hiroshi SHIBATA 2022-02-22 02:58:54 UTC

rubygems のテストで後始末時に @gemhome のディレクトリが削除できないということがおきてたらしいので ensure 節で FileUtils.chmod で書き込み権限を追加するようにしています。

[ae8a8b184e] Yusuke Endoh 2022-02-20 11:45:53 UTC

標準添付ライブラリ rdoc で require "cgi" していたのをやめて require "cgi/util" と必要な部分だけ load するようにしています。CGI.escape や CGI.escapeHTML などのメソッドを使っているだけだったので cgi 全体を load する必要はないため。

[50098f4b61] Mau Magnaguagno 2022-02-22 08:49:09 UTC

拡張ライブラリ zlib の Zlib.adler32_combine の rdoc 用コメントの typo 修正。

[37d5890e49] Tim Pope 2022-02-18 21:11:33 UTC

標準添付ライブラリ reline の inputrc の設定で keymap に emacs-ctlx と emacs-meta という設定がされた時に key binding の keystroke にそれぞれ Ctrl-x や \e を前に追加するようにしています。