Sha256: 2eeda7060708faa29fb1975e177c8b9889e7bfcad62d4bcddc6565e8ae1a4652

Contents?: true

Size: 1.33 KB

Versions: 20

Compression:

Stored size: 1.33 KB

Contents

# frozen_string_literal: true
require 'irb'

require 'proxy_rb/console/help'
require 'proxy_rb/api'

# ProxyRb
module ProxyRb
  # Consule
  class Console
    # Start the proxy_rb console
    def start
      # Start IRB with current context:
      # http://stackoverflow.com/questions/4189818/how-to-run-irb-start-in-context-of-current-class
      ARGV.clear
      IRB.setup nil

      IRB.conf[:IRB_NAME] = 'proxy_rb'

      IRB.conf[:PROMPT] = {}
      IRB.conf[:PROMPT][:PROXY_RB] = {
        PROMPT_I: '%N:%03n:%i> ',
        PROMPT_S: '%N:%03n:%i%l ',
        PROMPT_C: '%N:%03n:%i* ',
        RETURN: "# => %s\n"
      }
      IRB.conf[:PROMPT_MODE] = :PROXY_RB

      IRB.conf[:RC] = false

      require 'irb/completion'
      require 'irb/ext/save-history'
      IRB.conf[:READLINE] = true
      IRB.conf[:SAVE_HISTORY] = 1000
      IRB.conf[:HISTORY_FILE] = ProxyRb.config.console_history_file

      context = Class.new do
        include ProxyRb::Console::Help
        include ProxyRb::Api

        def inspect
          'nil'
        end
      end

      irb = IRB::Irb.new(IRB::WorkSpace.new(context.new))
      IRB.conf[:MAIN_CONTEXT] = irb.context

      trap('SIGINT') do
        irb.signal_handle
      end

      begin
        catch(:IRB_EXIT) do
          irb.eval_input
        end
      ensure
        IRB.irb_at_exit
      end
    end
  end
end

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
proxy_rb-1.0.0 lib/proxy_rb/console.rb
proxy_rb-0.10.6 lib/proxy_rb/console.rb
proxy_rb-0.10.5 lib/proxy_rb/console.rb
proxy_rb-0.10.4 lib/proxy_rb/console.rb
proxy_rb-0.10.3 lib/proxy_rb/console.rb
proxy_rb-0.10.2 lib/proxy_rb/console.rb
proxy_rb-0.10.1 lib/proxy_rb/console.rb
proxy_rb-0.10.0 lib/proxy_rb/console.rb
proxy_rb-0.9.3 lib/proxy_rb/console.rb
proxy_rb-0.9.2 lib/proxy_rb/console.rb
proxy_rb-0.9.1 lib/proxy_rb/console.rb
proxy_rb-0.9.0 lib/proxy_rb/console.rb
proxy_rb-0.8.3 lib/proxy_rb/console.rb
proxy_rb-0.8.2 lib/proxy_rb/console.rb
proxy_rb-0.8.1 lib/proxy_rb/console.rb
proxy_rb-0.8.0 lib/proxy_rb/console.rb
proxy_rb-0.7.1 lib/proxy_rb/console.rb
proxy_rb-0.7.0 lib/proxy_rb/console.rb
proxy_rb-0.6.0 lib/proxy_rb/console.rb
proxy_rb-0.5.0 lib/proxy_rb/console.rb