class Byebug::LocalInterface

Interface class for standard byebug use.

Constants

EOF_ALIAS

Public Class Methods

new() click to toggle source
Calls superclass method Byebug::Interface.new
# File lib/byebug/interfaces/local_interface.rb, line 9
def initialize
  super()
  @input = $stdin
  @output = $stdout
  @error = $stderr
end

Public Instance Methods

readline(prompt) click to toggle source

Reads a single line of input using Readline. If Ctrl-D is pressed, it returns “continue”, meaning that program's execution will go on.

@param prompt Prompt to be displayed.

# File lib/byebug/interfaces/local_interface.rb, line 22
def readline(prompt)
  with_repl_like_sigint do
    Readline.readline(prompt, false) || EOF_ALIAS
  end
end
with_repl_like_sigint() { || ... } click to toggle source

Yields the block handling Ctrl-C the following way: if pressed while waiting for input, the line is reset to only the prompt and we ask for input again.

@note Any external 'INT' traps are overriden during this method.

# File lib/byebug/interfaces/local_interface.rb, line 35
def with_repl_like_sigint
  orig_handler = trap('INT') { raise Interrupt }
  yield
rescue Interrupt
  puts('^C')
  retry
ensure
  trap('INT', orig_handler)
end