Sha256: dbd28d7c0ef3fb23f39463916f518394b4c476ad8a806572d9e8b842d340418b

Contents?: true

Size: 923 Bytes

Versions: 3

Compression:

Stored size: 923 Bytes

Contents

require_relative 'extension_constants'
require WEBCONSOLE_FILE

module WebConsole::REPL
  require_relative "repl/lib/input_controller"
  require_relative "repl/lib/output_controller"
  require_relative "repl/lib/view"

  class Wrapper
    require 'pty'

    def initialize(command)

      PTY.spawn(command) do |output, input, pid|
        Thread.new do
          output.each { |line|
            output_controller.parse_output(line)
          }
        end
        @input = input
      end

    end

    def parse_input(input)
      input_controller.parse_input(input)
      write_input(input)
    end

    def write_input(input)
      @input.write(input)
    end

    private

    def input_controller
      @input_controller ||= InputController.new(view)
    end
    
    def output_controller
      @output_controller ||= OutputController.new(view)
    end
    
    def view
      @view ||= View.new
    end

  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
webconsole-0.2.1 lib/webconsole/repl.rb
webconsole-0.2.0 lib/webconsole/repl.rb
webconsole-0.1.19 lib/webconsole/repl.rb