Камень HighLine делает это легко.
Для простого вопроса «да» или «нет» вы можете использовать agree
:
require "highline/import"
task :agree do
if agree("Shall we continue? ( yes or no )")
puts "Ok, lets go"
else
puts "Exiting"
end
end
Если вы хотите сделать что-то более сложное, используйте ask
:
require "highline/import"
task :ask do
answer = ask("Go left or right?") { |q|
q.default = "left"
q.validate = /^(left|right)$/i
}
if answer.match(/^right$/i)
puts "Going to the right"
else
puts "Going to the left"
end
end
Вот описание камня:
Объект HighLine представляет собой «высокоуровневую ориентированную на линию» оболочку над входом
и выходной поток. HighLine упрощает взаимодействие с общей консолью,
эффективно заменяя put () и gets (). Код пользователя можно просто указать
вопрос, чтобы задать и любые детали о взаимодействии с пользователем, а затем оставить
остальная часть работы до HighLine. Когда HighLine.ask () вернется, вы
получить ответ, который вы просили, даже если HighLine пришлось спрашивать много раз,
проверить результаты, выполнить проверку диапазона, преобразовать типы и т. д.
Для получения дополнительной информации вы можете прочитать документы .