类 IRB::Debug::UI
公共类方法
new(irb) 点击切换源代码
# File lib/irb/debug/ui.rb, line 7 def initialize(irb) @irb = irb end
公共实例方法
activate(session, on_fork: false) 点击切换源代码
# File lib/irb/debug/ui.rb, line 15 def activate session, on_fork: false end
after_fork_parent() 点击切换源代码
# File lib/irb/debug/ui.rb, line 84 def after_fork_parent parent_pid = Process.pid at_exit{ DEBUGGER__::SESSION.intercept_trap_sigint_end trap(:SIGINT, :IGNORE) if Process.pid == parent_pid # only check child process from its parent begin # wait for all child processes to keep terminal Process.waitpid rescue Errno::ESRCH, Errno::ECHILD end end } end
ask(prompt) 点击切换源代码
# File lib/irb/debug/ui.rb, line 34 def ask prompt setup_interrupt do print prompt ($stdin.gets || '').strip end end
deactivate() 点击切换源代码
# File lib/irb/debug/ui.rb, line 18 def deactivate end
puts(str = nil) 点击切换源代码
# File lib/irb/debug/ui.rb, line 41 def puts str = nil case str when Array str.each{|line| $stdout.puts line.chomp } when String str.each_line{|line| $stdout.puts line.chomp } when nil $stdout.puts end end
quit(n) { || ... } 点击切换源代码
# File lib/irb/debug/ui.rb, line 29 def quit n yield exit n end
readline(_) 点击切换源代码
# File lib/irb/debug/ui.rb, line 56 def readline _ setup_interrupt do tc = DEBUGGER__::SESSION.instance_variable_get(:@tc) cmd = @irb.debug_readline(tc.current_frame.binding || TOPLEVEL_BINDING) case cmd when nil # when user types C-d "continue" else cmd end end end
remote?() 点击切换源代码
# File lib/irb/debug/ui.rb, line 11 def remote? false end
setup_interrupt() { || ... } 点击切换源代码
# File lib/irb/debug/ui.rb, line 70 def setup_interrupt DEBUGGER__::SESSION.intercept_trap_sigint false do current_thread = Thread.current # should be session_server thread prev_handler = trap(:INT){ current_thread.raise Interrupt } yield ensure trap(:INT, prev_handler) end end
width() 点击切换源代码
# File lib/irb/debug/ui.rb, line 21 def width if (w = IO.console_size[1]) == 0 # for tests PTY 80 else w end end