Ruby 4.0 リファレンスマニュアル

singleton method Reline.completion_proc

completion_proc -> Proc | nilRuby 2.7 から[permalink][rdoc][edit]
completion_proc=(proc)

ユーザからの入力を補完するときの候補を取得する Proc オブジェクトを取得/設定します。デフォルトは nil で、このときは補完を行いません。

proc は、引数に入力中の単語(カーソル位置までの、Reline.completer_word_break_characters に含まれる文字で区切られた文字列)を受け取り、候補の文字列の配列を返すようにします。 2 個以上の引数を受け取る proc を指定した場合は、第 2 引数に単語より前の文字列が、第 3 引数に単語より後ろの文字列も渡されます。

補完は Tab キーの押下で実行されます。 Reline.autocompletion が真のときは、文字の入力のたびに呼ばれて候補がダイアログに表示されます。

[PARAM] proc:
補完候補を取得する Proc オブジェクト、または nil を指定します。
例: foo、foobar、foobaz を補完する
require 'reline'

WORDS = %w(foo foobar foobaz)

Reline.completion_proc = proc { |word|
  WORDS.grep(/\A#{Regexp.quote(word)}/)
}

while buf = Reline.readline("> ")
  print("-> ", buf, "\n")
end