class PressAnyKey

Constants

CTRL_C
MESSAGE

Public Class Methods

new(console: nil, message: MESSAGE) click to toggle source
# File lib/press_any_key.rb, line 7
def initialize(console: nil,  message: MESSAGE)
  with(console) do |console_rd, console_wr|
    console_wr.puts message
    key = console_rd.getch
    raise Interrupt if key == CTRL_C
  end
end

Private Instance Methods

parse_console(console) click to toggle source
# File lib/press_any_key.rb, line 26
def parse_console(console)
  return console if console.kind_of?(Array) && console.count == 2
  return [console, console] unless console.nil?

  if $stdin.tty? && $stdout.tty?
    console_rd = $stdin
    console_wr = $stdout
  else
    console_rd = console_wr = IO.console
  end

  [console_rd, console_wr]
end
with(console) { |console_rd, console_wr| ... } click to toggle source
# File lib/press_any_key.rb, line 17
def with(console)
  console_rd, console_wr = parse_console(console)
  yield(console_rd, console_wr)
rescue
  warn "Couldn't connect to TTY!"
  warn $!
  warn $!.backtrace
end