class IRB::ReadlineInputMethod

Public Class Methods

initialize_readline() click to toggle source
# File irb/input-method.rb, line 163
def self.initialize_readline
  require "readline"
rescue LoadError
else
  include ::Readline
end
new() click to toggle source

Creates a new input method object using Readline

Calls superclass method IRB::StdioInputMethod::new
# File irb/input-method.rb, line 173
def initialize
  self.class.initialize_readline
  if Readline.respond_to?(:encoding_system_needs)
    IRB.__send__(:set_encoding, Readline.encoding_system_needs.name, override: false)
  end

  super

  @eof = false

  if Readline.respond_to?("basic_word_break_characters=")
    Readline.basic_word_break_characters = IRB::InputCompletor::BASIC_WORD_BREAK_CHARACTERS
  end
  Readline.completion_append_character = nil
  Readline.completion_proc = IRB::InputCompletor::CompletionProc
end

Public Instance Methods

eof?() click to toggle source

Whether the end of this input method has been reached, returns true if there is no more data to read.

See IO#eof? for more information.

# File irb/input-method.rb, line 209
def eof?
  @eof
end
gets() click to toggle source

Reads the next line from this input method.

See IO#gets for more information.

# File irb/input-method.rb, line 193
def gets
  Readline.input = @stdin
  Readline.output = @stdout
  if l = readline(@prompt, false)
    HISTORY.push(l) if !l.empty?
    @line[@line_no += 1] = l + "\n"
  else
    @eof = true
    l
  end
end
inspect() click to toggle source

For debug message

# File irb/input-method.rb, line 214
def inspect
  readline_impl = (defined?(Reline) && Readline == Reline) ? 'Reline' : 'ext/readline'
  str = "ReadlineInputMethod with #{readline_impl} #{Readline::VERSION}"
  inputrc_path = File.expand_path(ENV['INPUTRC'] || '~/.inputrc')
  str += " and #{inputrc_path}" if File.exist?(inputrc_path)
  str
end