class MiddleSquid::Backends::Keyboard

Receives data from the standard input.

Public Class Methods

new(handler) click to toggle source

@param handler [#call] called when a full line has been received

# File lib/middle_squid/backends/keyboard.rb, line 5
def initialize(handler)
  @buffer = []
  @handler = handler
end

Public Instance Methods

receive_data(char) click to toggle source

@param char [String] single character

# File lib/middle_squid/backends/keyboard.rb, line 11
def receive_data(char)
  case char
  when "\x00"
    EM.stop
  when "\n"
    line = @buffer.join
    @buffer.clear

    receive_line line
  else
    @buffer << char
  end
end
receive_line(line) click to toggle source

@param line [String] full line without the trailing linebreak

# File lib/middle_squid/backends/keyboard.rb, line 26
def receive_line(line)
  # EventMachine sends ASCII-8BIT strings, somehow preventing the databases queries to match
  @handler.call line.force_encoding(Encoding::UTF_8)
end