module Pry::Byebug::Breakpoints
Wrapper for Byebug.breakpoints that respects our Processor and has better failure behavior. Acts as an Enumerable.
Public Instance Methods
add_file(file, line, expression = nil)
click to toggle source
Adds a file breakpoint.
# File lib/pry/byebug/breakpoints.rb, line 61 def add_file(file, line, expression = nil) real_file = (file != Pry.eval_path) raise(ArgumentError, "Invalid file!") if real_file && !File.exist?(file) validate_expression expression path = (real_file ? File.expand_path(file) : file) bp = FileBreakpoint.new ::Byebug::Breakpoint.add(path, line, expression) breakpoints << bp bp end
add_method(method, expression = nil)
click to toggle source
Adds a method breakpoint.
# File lib/pry/byebug/breakpoints.rb, line 49 def add_method(method, expression = nil) validate_expression expression owner, name = method.split(/[\.#]/) byebug_bp = ::Byebug::Breakpoint.add(owner, name.to_sym, expression) bp = MethodBreakpoint.new byebug_bp, method breakpoints << bp bp end
breakpoints()
click to toggle source
# File lib/pry/byebug/breakpoints.rb, line 42 def breakpoints @breakpoints ||= [] end
change(id, expression = nil)
click to toggle source
Changes the conditional expression for a breakpoint.
# File lib/pry/byebug/breakpoints.rb, line 75 def change(id, expression = nil) validate_expression expression breakpoint = find_by_id(id) breakpoint.expr = expression breakpoint end
delete(id)
click to toggle source
Deletes an existing breakpoint with the given ID.
# File lib/pry/byebug/breakpoints.rb, line 86 def delete(id) deleted = ::Byebug.started? && ::Byebug::Breakpoint.remove(id) && breakpoints.delete(find_by_id(id)) raise(ArgumentError, "No breakpoint ##{id}") unless deleted end
delete_all()
click to toggle source
Deletes all breakpoints.
# File lib/pry/byebug/breakpoints.rb, line 98 def delete_all @breakpoints = [] ::Byebug.breakpoints.clear if ::Byebug.started? end
disable(id)
click to toggle source
Disables a breakpoint with the given ID.
# File lib/pry/byebug/breakpoints.rb, line 113 def disable(id) change_status id, false end
disable_all()
click to toggle source
Disables all breakpoints.
# File lib/pry/byebug/breakpoints.rb, line 120 def disable_all each do |breakpoint| breakpoint.enabled = false end end
each(&block)
click to toggle source
# File lib/pry/byebug/breakpoints.rb, line 134 def each(&block) to_a.each(&block) end
enable(id)
click to toggle source
Enables a disabled breakpoint with the given ID.
# File lib/pry/byebug/breakpoints.rb, line 106 def enable(id) change_status id, true end
find_by_id(id)
click to toggle source
# File lib/pry/byebug/breakpoints.rb, line 142 def find_by_id(id) breakpoint = find { |b| b.id == id } raise(ArgumentError, "No breakpoint ##{id}!") unless breakpoint breakpoint end
last()
click to toggle source
# File lib/pry/byebug/breakpoints.rb, line 138 def last to_a.last end
size()
click to toggle source
# File lib/pry/byebug/breakpoints.rb, line 130 def size to_a.size end
to_a()
click to toggle source
# File lib/pry/byebug/breakpoints.rb, line 126 def to_a breakpoints end
Private Instance Methods
change_status(id, enabled = true)
click to toggle source
# File lib/pry/byebug/breakpoints.rb, line 150 def change_status(id, enabled = true) breakpoint = find_by_id(id) breakpoint.enabled = enabled breakpoint end
validate_expression(exp)
click to toggle source
# File lib/pry/byebug/breakpoints.rb, line 156 def validate_expression(exp) valid = exp && (exp.empty? || !Pry::Code.complete_expression?(exp)) return unless valid raise("Invalid breakpoint conditional: #{expression}") end