Sha256: 37c8a97169e63f67aca6713a03e996041fddc2da1b6399f5c26f625fb41a9892

Contents?: true

Size: 787 Bytes

Versions: 2

Compression:

Stored size: 787 Bytes

Contents

module WindowBlessing
class XtermInput
  attr_reader :event_parser

  def initialize
    @event_parser = XtermEventParser.new
  end

  def read_events
    events = []
    if raw = read_pending_input
      parsed = event_parser.parse(raw)
      if parsed
        new_events = parsed.events
        events += new_events
        new_events.length
      else
        events << {:type => :event_parser_failure, :raw => raw, :failure_info => event_parser.parser_failure_info}
      end
    end
    events
  end

  private
  def read_pending_input
    read = nil
    begin
      while c = STDIN.read_nonblock(1000)
        read = read ? read + c : c
      end
    rescue Errno::EAGAIN  # nothing was ready to be read
    rescue Errno::EINTR
    rescue EOFError
    end
    read
  end

end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
window_blessing-0.0.4 lib/window_blessing/xterm_input.rb
window_blessing-0.0.1 lib/window_blessing/xterm_input.rb