class Rubinius::Debugger::Command::SetBreakPoint
Public Instance Methods
ask_deferred(klass_name, which, name, line)
click to toggle source
# File lib/rubinius/debugger/commands.rb, line 167 def ask_deferred(klass_name, which, name, line) answer = ask "Would you like to defer this breakpoint to later? [y/n] " if answer.strip.downcase[0] == ?y @debugger.add_deferred_breakpoint(klass_name, which, name, line) info "Deferred breakpoint created." end end
match_method(method_identifier)
click to toggle source
provide this method so it can be overriden for other languages wanting to use this debugger
# File lib/rubinius/debugger/commands.rb, line 123 def match_method(method_identifier) /([A-Z]\w*(?:::[A-Z]\w*)*)([.#]|::)([a-zA-Z0-9_\[\]]+[!?=]?)(?:[:](\d+))?(\s+if\s+.*)?/.match(method_identifier) end
run(args, temp=false)
click to toggle source
# File lib/rubinius/debugger/commands.rb, line 127 def run(args, temp=false) m = match_method(args) unless m error "Unrecognized position: '#{args}'" return end klass_name = m[1] which = m[2] name = m[3] line = m[4] ? m[4].to_i : nil condition = m[5] ? m[5].sub(/\A\s+if\s+/, '') : nil begin klass = run_code(klass_name) rescue NameError error "Unable to find class/module: #{m[1]}" ask_deferred klass_name, which, name, line return end begin if which == "#" method = klass.instance_method(name) else method = klass.method(name) end rescue NameError error "Unable to find method '#{name}' in #{klass}" ask_deferred klass_name, which, name, line return end bp = @debugger.set_breakpoint_method args.strip, method, line, condition bp.set_temp! if temp return bp end