ruby-trunk-changes 2019-05-13

今日は主に標準添付ライブラリ reline の readline との互換性のためのメソッド追加などがありました。

[fc57e10569] aycabta 2019-05-12 20:43:38 +0900

b1767e56b158d8307412a0928a7ac2366541429d の reline のテスト追加を revert しています。メソッド名だけじゃなくて中身も全く同じだったのでミスで追加されたようです。

[aaaede8bcf] aycabta 2019-05-12 21:22:04 +0900

標準添付ライブラリ reline の Reline::LineEditor のインスタンスをモジュール Reline のインスタンス変数に格納してたのを、クラス変数に格納するようにしています。ふーむ、クラス変数のほうがいいのかな?

[11476e9902] aycabta 2019-05-12 23:21:41 +0900

aaaede8bcff278bd304092e1c74d39e8fbd4cef8 の変更で Reline::Config の読み込みがスクリプトのロード時になってたので Reline.inner_readline の呼び出し時まで遅延するように戻しています。また Reline::Config.read で環境変数 INPUTRC が設定されていたらそちらを参照するようにしています。

[0f45bd0584] aycabta 2019-05-13 00:22:27 +0900

標準添付ライブラリ reline で端末からの入力を windows とそれ以外でメソッドの定義を分岐してたのを Module を分けてそれを Reline::IO という定数に代入するところを分岐するように変更しています。

[d3a702a3f1] git 2019-05-13 00:23:03 +0900

version.h の日付更新。

[33bce2585f] aycabta 2019-05-13 00:31:32 +0900

標準添付ライブラリ reline のテストで Reline::LineEditor の prompt と encoding を initialize 時に指定するのではなくて、作成後に reset メソッドを呼んで設定するように変更しています。なにか違いがあるのかな。

[559cad9f2d] okuramasafumi 2019-05-13 00:43:05 +0900

Enumerable#include? の rdoc 用コメントのサンプルコードでなぜか意味ありげに IO.constants を使った例が使われてたので Range を使ったより一般的な内容に書き換えています。 https://github.com/ruby/ruby/pull/2168

[bb56b89900] aycabta 2019-05-13 01:51:05 +0900

標準添付ライブラリ reline に履歴のインクリメント検索の機能(ed_search_prev_history)を追加しています。実装に Fiber を使ってるのがおもしろいですね。

[9cb821b024] aycabta 2019-05-13 02:14:48 +0900

標準添付ライブラリ reline に入出力の IO をすりかえる Reline.input= と Reline.output= を追加しています。

[c137f015ab] aycabta 2019-05-13 02:20:20 +0900

標準添付ライブラリ reline に Readline と同様の Reline.pre_input_hook および Reline.pre_input_hook= というメソッドを追加しています。 Reline::LineEditor の設定を透過的にセットするためのメソッドとして。

[5837290af1] aycabta 2019-05-13 02:26:31 +0900

同様に Reline に Readline との互換性のための特異メソッドをいくつか追加しています。

[e467f920a3] aycabta 2019-05-13 02:30:53 +0900

同様に(互換性のため?) Reline.special_prefixes というメソッドを追加しています。

[130ced9fb0] aycabta 2019-05-13 02:31:42 +0900

Reline.completion_append_character= の引数が空文字列だった時に nil として扱うようにしています。

[ebb15cc6c1] aycabta 2019-05-13 02:33:29 +0900

Reline.completion_proc= で引数が Proc オブジェクトじゃなかったら ArgumentError を発生させるようにしています。

[c48778d642] aycabta 2019-05-13 03:24:15 +0900

標準添付ライブラリ reline の Reline::Config に各設定項目の attr_accessor を定義するようにしています。

[caef2ddaaf] aycabta 2019-05-13 03:26:10 +0900

標準添付ライブラリ reline の Reline::HISTORY をただの Array として作っていたのを、Array を継承したクラスのインスタンスとして定義しなおして、操作時に index チェックしてわかりやすい例外メッセージを上げるようにしています。

[75f196ce75] aycabta 2019-05-13 03:29:18 +0900

標準添付ライブラリ readline のテストの一部を Readline が Reline で代替されている時に skip するようにしています。

[24964fff92] aycabta 2019-05-13 04:22:15 +0900

75f196ce75f35ecbab8186c9ada2f3a91160f8f9 の再修正。 Reline が定義されているか defined? でチェックしてから参照するように修正しています。

[2dc613815d] Étienne Barrié 2019-05-13 11:29:42 +0900

標準添付ライブラリ delegate の method_missing でモジュール Kernel で定義されているインスタンスメソッドに委譲する時の条件判定が Kernel.respond_to? で行なわれていましたが、これだと Kernel の特異メソッドとして存在してるものだけ反応するので Module#method_defined? と Module#private_method_defined? で判定するように修正しています。 https://github.com/ruby/ruby/pull/1422