見出し画像

【続】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ならなんとかしてくれそう。ふふ。

この記事が気に入ったらサポートをしてみませんか?