Class: Meshchat::Ui::CLI::ReadlineInput

Inherits:
Object
  • Object
show all
Defined in:
lib/meshchat/ui/cli/readline_input.rb

Defined Under Namespace

Modules: Handler

Class Attribute Summary collapse

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(input_receiver) ⇒ ReadlineInput

Returns a new instance of ReadlineInput.



11
12
13
# File 'lib/meshchat/ui/cli/readline_input.rb', line 11

def initialize(input_receiver)
  @_input_receiver = input_receiver
end

Class Attribute Details

.input_handlerObject

Returns the value of attribute input_handler.



57
58
59
# File 'lib/meshchat/ui/cli/readline_input.rb', line 57

def input_handler
  @input_handler
end

Instance Attribute Details

#_input_receiverObject (readonly)

The class used for interpeting the line input



9
10
11
# File 'lib/meshchat/ui/cli/readline_input.rb', line 9

def _input_receiver
  @_input_receiver
end

Class Method Details

.autocompletesObject



51
52
53
54
55
# 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

Instance Method Details

#startObject



62
63
64
65
66
67
68
69
70
71
72
# 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