Sha256: ee70d0606ea80353d9e5428dd6391e40dbaa880453c681a8545a98e01e039919

Contents?: true

Size: 1.65 KB

Versions: 3

Compression:

Stored size: 1.65 KB

Contents

require("rubinius/debugger")

class Rubinius Debugger {
  forwards_unary_ruby_methods
  metaclass forwards_unary_ruby_methods
}

class Rubinius Debugger Command SetBreakPoint {
  def match_method: method_identifier {
    match method_identifier {
      case /##/ ->
        class_name, method_name = method_identifier split: "##"
        method_identifier = "#{class_name}::#{method_name message_name}"
      case /#/ ->
        class_name, method_name = method_identifier split: "#"
        method_identifier = "#{class_name}##{method_name message_name}"
    }

    /([A-Z]\w*(?:::[A-Z]\w*)*)([.#]|::)([a-zA-Z0-9_\[\]:]+[!?=]?)(?:[:](\d+))?/ match: method_identifier
  }

  alias_method('match_method, 'match_method:)
}

class Rubinius Location {
  forwards_unary_ruby_methods
}

class Rubinius Debugger Frame {
  forwards_unary_ruby_methods

  def describe {
    arg_str = ""
    recv = nil
    loc = @location

    if: (loc is_block) then: {
      if: (method required_args == 0) then: {
        recv = "{ } in #{loc describe_receiver}#{loc name}"
      } else: {
        block_args = method local_names join: ", "
        recv = "|#{block_args}| { } in #{loc describe_receiver}#{loc name}"
      }
    } else: {
      recv = loc describe
    }

    recv = recv replace: "#:" with: "#"
    recv = recv replace: ".:" with: "##"
    recv = recv replace: "." with: "##"

    str = "#{recv} at #{loc method active_path}:#{loc line} (#{loc ip})"
    { str << " (+#{loc ip})" } if: $ @debugger variables['show_ip]
    str
  }

  alias_method('describe, ':describe)

  def run: code {
    Fancy eval: (code to_s) binding: binding
  }

  alias_method('run, 'run:)
}

Rubinius Debugger start

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
fancy-0.10.0 lib/rbx/debugger.fy
fancy-0.9.0 lib/rbx/debugger.fy
fancy-0.8.0 lib/rbx/debugger.fy