【続】DOS画面での入力処理は面倒臭いですよね。
.gets_with_regulation(explanation, passing_lst, allow_only_enter = false)
.gets_with_conditionの兄弟になります。もっともよく使うだろうパターンのために.gets_with_conditionにラップしたものです。
通過条件をブロックに記述する必要がなくなり、passing_lstに通過条件の文字列を配列で渡すだけで利用できます。
module CommonModule
private
def gets_with_regulation(explanation, passing_lst, allow_only_enter = false)
# eg. msg = 'いままでの成績をクリアしますか? (Y/N) '
# pass_cond = %w[Y N]
# y_n = gets_with_regulation(msg, pass_cond).upcase
gets_with_condition(explanation, allow_only_enter) do |s|
s = s.upcase
passing_lst.include?(s)
end
end
end
掲載が省略されていますが、同じモジュール内に.gets_with_conditionも必要です。
ANSI::EscapeSequenceも必須です。
ESC = ANSI::EscapeSequence # 適切な場所で、必要な呪文を唱える
include CommonModule # 適切な場所で、必要な呪文を唱える
puts answer = gets_with_regulation('ログをクリアしますか?(Y/N) ===> ', %[Y N]).upcase
puts answer = gets_with_regulation('元号を入力して下さい。(1:昭和, 2:平成, 3:令和) ===> ', %[1 2 3])
こんな感じで、ワンラインですっきりです。どお?
こんなポンコツでも、rubyならなんとかしてくれそう。ふふ。
この記事が気に入ったらサポートをしてみませんか?