Sha256: b7edc8ce0a0af011957f73186256b95a173ea73847707ca0ad1858adcc4865fa
Contents?: true
Size: 1.03 KB
Versions: 3
Compression:
Stored size: 1.03 KB
Contents
# frozen_string_literal: true module Byebug # # Interface class for standard byebug use. # class LocalInterface < Interface EOF_ALIAS = 'continue'.freeze def initialize super() @input = $stdin @output = $stdout @error = $stderr end # # 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. # def readline(prompt) with_repl_like_sigint { Readline.readline(prompt) || EOF_ALIAS } end # # 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. # def with_repl_like_sigint orig_handler = trap('INT') { raise Interrupt } yield rescue Interrupt puts('^C') retry ensure trap('INT', orig_handler) end end end
Version data entries
3 entries across 3 versions & 3 rubygems