Sha256: 4a4fd5607502614217b640887ec807f7bc6c993204855377dd79cc2ae1c39690

Contents?: true

Size: 1.41 KB

Versions: 1

Compression:

Stored size: 1.41 KB

Contents

module Byebug

  # Implements byebug "jump" command
  class JumpCommand < Command
    self.allow_in_control = true

    def numeric?(object)
      true if Float(object) rescue false
    end

    def regexp
      /^\s* j(?:ump)? (?:\s+(\S+))? \s* (?:\s+(\S+))? \s*$/ix
    end

    def execute
      return errmsg "\"jump\" must be followed by a line number\n" unless @match[1]
      return errmsg "Bad line number: " + @match[1] unless numeric?(@match[1])

      line = @match[1].to_i
      line = @state.context.frame_line(0) + line if @match[1][0] == '+' or @match[1][0] == '-'
      return aprint @state.location if line == @state.context.frame_line(0)

      file = @match[2]
      file = @state.context.frame_file(file.to_i) if numeric?(file)
      file = @state.context.frame_file(0) if !file
      case Byebug.context.jump(line, file)
      when 0
        @state.proceed
      when 1
        errmsg "Not possible to jump from here\n"
      when 2
        errmsg "Couldn't find debugged frame\n"
      when 3
        errmsg "Couldn't find active code at " + file + ":" + line.to_s + "\n"
      end
    end

    class << self
      def names
        %w(jump)
      end

      def description
        %{j[ump] line\tjump to line number (absolute)
          j[ump] -line\tjump back to line (relative)
          j[ump] +line\tjump ahead to line (relative)

          Change the next line of code to be executed.}
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
byebug-1.8.2 lib/byebug/commands/jump.rb