class Meshchat::Ui::CLI::ReadlineInput

Attributes

input_handler[RW]
_input_receiver[R]

The class used for interpeting the line input

Public Class Methods

autocompletes() click to toggle source
# File lib/meshchat/ui/cli/readline_input.rb, line 51
def autocompletes
  commands = Meshchat::Ui::Command::COMMAND_MAP.map { |k, _v| "/#{k}" }
  aliases = Meshchat::Node.all.map { |n| n.alias_name.to_s }
  commands + aliases
end
new(input_receiver) click to toggle source
# File lib/meshchat/ui/cli/readline_input.rb, line 11
def initialize(input_receiver)
  @_input_receiver = input_receiver
end

Public Instance Methods

start() click to toggle source
# File lib/meshchat/ui/cli/readline_input.rb, line 62
def start
  # Ripl.start

  conn = EventMachine.watch $stdin, Handler
  conn.notify_readable = true
  conn.input_receiver = _input_receiver
  self.class.input_handler = conn
  # update auto completion
  completion = proc { |s| self.class.autocompletes.grep(/^#{Regexp.escape(s)}/) }
  Readline.completion_proc = completion
end