Я использую HighLine::Question.readline
для достижения tab completion
в Ruby.Ниже приведен фрагмент кода tab_complete.rb
, который делает это для меня.
require "rubygems"
require "highline/import"
tab_complete = ["yes", "okay", "maybe", "no"]
selected = ask("Please say something: ", tab_complete) do |q|
q.readline = true
end
p selected
-bash-4.1$ ruby tab_complete.rb
Please say something: yes
"yes"
Приведенный выше код отлично работает для элементов, которые находятся в массиве, но я хочу обработать регистр-независящее от табуляции завершение,Например, если пользователь вводит upcase
или downcase
y
и нажимает клавишу tab
, он должен завершиться как downcase
yes
, и это значение должно быть сохранено в selected
.Прямо сейчас мне предлагается ввести регистрозависимые слова, как показано ниже:
-bash-4.1$ ruby tab_complete.rb
Please say something: Y
You must choose one of [yes, okay, maybe, no].
? Please say something:
Любые указатели на это будут очень полезны для продвижения вперед.