Sha256: e43784293eac7428b2440e17e0b9fa51ef4f4b42343745c5ec8fd9eb9c53fcb6

Contents?: true

Size: 1.04 KB

Versions: 2

Compression:

Stored size: 1.04 KB

Contents

require 'byebug/states/control_state'

module Byebug
  #
  # Processes commands in 'control' mode, when there's no program running
  #
  class ControlCommandProcessor < Processor
    attr_reader :state

    def initialize(interface = LocalInterface.new)
      super(interface)
    end

    def commands
      Byebug.commands.select(&:allow_in_control).map { |cmd| cmd.new(state) }
    end

    def process_commands
      @state = ControlState.new(interface)

      while (input = @interface.read_command(prompt(nil)))
        cmd = commands.find { |c| c.match(input) }
        unless cmd
          errmsg('Unknown command')
          next
        end

        cmd.execute
      end

      @interface.close
    rescue IOError, SystemCallError
      @interface.close
    rescue
      without_exceptions do
        puts "INTERNAL ERROR!!! #{$ERROR_INFO}"
        puts $ERROR_INFO.backtrace.map { |l| "\t#{l}" }.join("\n")
      end
    end

    #
    # Prompt shown before reading a command.
    #
    def prompt(_context)
      '(byebug:ctrl) '
    end
  end
end

Version data entries

2 entries across 2 versions & 2 rubygems

Version Path
sc_core-0.0.7 test/dummy/vendor/bundle/ruby/2.2.0/gems/byebug-5.0.0/lib/byebug/processors/control_command_processor.rb
byebug-5.0.0 lib/byebug/processors/control_command_processor.rb