lib/cli/ui/prompt/interactive_options.rb in cli-ui-1.1.1 vs lib/cli/ui/prompt/interactive_options.rb in cli-ui-1.1.2

- old
+ new

@@ -111,35 +111,41 @@ def wait_for_user_input char = read_char case @state when :root case char + when :timeout ; raise Interrupt # Timeout, use interrupt to simulate when ESC ; @state = :esc when 'k' ; up when 'j' ; down when ('1'..@options.size.to_s) ; select_n(char.to_i) when 'y', 'n' ; select_bool(char) when " ", "\r", "\n" ; @answer = @active # <enter> when "\u0003" ; raise Interrupt # Ctrl-c end when :esc case char - when '[' ; @state = :esc_bracket - else ; raise Interrupt # unhandled escape sequence. + when :timeout ; raise Interrupt # Timeout, use interrupt to simulate + when '[' ; @state = :esc_bracket + else ; raise Interrupt # unhandled escape sequence. end when :esc_bracket @state = :root case char - when 'A' ; up - when 'B' ; down - else ; raise Interrupt # unhandled escape sequence. + when :timeout ; raise Interrupt # Timeout, use interrupt to simulate + when 'A' ; up + when 'B' ; down + else ; raise Interrupt # unhandled escape sequence. end end end # rubocop:enable Style/WhenThen,Layout/SpaceBeforeSemicolon def read_char - raw_tty! { $stdin.getc.chr } + raw_tty! do + getc = $stdin.getc + getc ? getc.chr : :timeout + end rescue IOError "\e" end def raw_tty!