Class: Byebug::CommandProcessor

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Includes:
Helpers::EvalHelper
Defined in:
lib/byebug/processors/command_processor.rb

Overview

Processes commands in regular mode.

You can override this class to create your own command processor that, for example, whitelists only certain commands to be executed.

See Also:

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Helpers::EvalHelper

#error_eval, #silent_eval, #single_thread_eval, #thread_safe_eval, #warning_eval

Constructor Details

#initialize(context) ⇒ CommandProcessor

Returns a new instance of CommandProcessor.



21
22
23
24
25
26
# File 'lib/byebug/processors/command_processor.rb', line 21

def initialize(context)
  @context = context

  @proceed = false
  @prev_line = nil
end

Instance Attribute Details

#contextObject (readonly)

Returns the value of attribute context.



19
20
21
# File 'lib/byebug/processors/command_processor.rb', line 19

def context
  @context
end

#prev_lineObject

Returns the value of attribute prev_line.



18
19
20
# File 'lib/byebug/processors/command_processor.rb', line 18

def prev_line
  @prev_line
end

Instance Method Details

#at_breakpoint(brkpt) ⇒ Object



58
59
60
61
62
# File 'lib/byebug/processors/command_processor.rb', line 58

def at_breakpoint(brkpt)
  number = Byebug.breakpoints.index(brkpt) + 1

  puts "Stopped by breakpoint #{number} at #{frame.file}:#{frame.line}"
end

#at_catchpoint(exception) ⇒ Object



64
65
66
# File 'lib/byebug/processors/command_processor.rb', line 64

def at_catchpoint(exception)
  puts "Catchpoint at #{context.location}: `#{exception}'"
end

#at_lineObject



74
75
76
# File 'lib/byebug/processors/command_processor.rb', line 74

def at_line
  process_commands
end

#at_return(return_value) ⇒ Object



78
79
80
81
82
# File 'lib/byebug/processors/command_processor.rb', line 78

def at_return(return_value)
  puts "Return value is: #{safe_inspect(return_value)}"

  process_commands
end

#at_tracingObject



68
69
70
71
72
# File 'lib/byebug/processors/command_processor.rb', line 68

def at_tracing
  puts "Tracing: #{context.full_location}"

  run_auto_cmds(2)
end

#command_listObject

Available commands



50
51
52
# File 'lib/byebug/processors/command_processor.rb', line 50

def command_list
  @command_list ||= CommandList.new(commands)
end

#commandsObject



54
55
56
# File 'lib/byebug/processors/command_processor.rb', line 54

def commands
  Byebug.commands
end

#frameObject



36
37
38
# File 'lib/byebug/processors/command_processor.rb', line 36

def frame
  @context.frame
end

#interfaceObject



28
29
30
# File 'lib/byebug/processors/command_processor.rb', line 28

def interface
  @interface ||= Context.interface
end

#printerObject



32
33
34
# File 'lib/byebug/processors/command_processor.rb', line 32

def printer
  @printer ||= Printers::Plain.new
end

#proceed!Object

Let the execution continue



87
88
89
# File 'lib/byebug/processors/command_processor.rb', line 87

def proceed!
  @proceed = true
end

#process_commandsObject

Handle byebug commands.



94
95
96
97
98
99
100
# File 'lib/byebug/processors/command_processor.rb', line 94

def process_commands
  before_repl

  repl
ensure
  after_repl
end