class IRB::StdioInputMethod

公共类方法

new() 点击切换源代码

创建一个新的输入方法对象

# File irb/input-method.rb, line 59
def initialize
  @line_no = 0
  @line = []
  @stdin = IO.open(STDIN.to_i, :external_encoding => IRB.conf[:LC_MESSAGES].encoding, :internal_encoding => "-")
  @stdout = IO.open(STDOUT.to_i, 'w', :external_encoding => IRB.conf[:LC_MESSAGES].encoding, :internal_encoding => "-")
end

公共实例方法

encoding() 点击切换源代码

标准输入的外部编码。

# File irb/input-method.rb, line 115
def encoding
  @stdin.external_encoding
end
eof?() 点击切换源代码

是否已到达此输入方法的末尾,如果没有更多数据可读,则返回 true

有关更多信息,请参见 IO#eof?。

# File irb/input-method.rb, line 82
def eof?
  if @stdin.wait_readable(0.00001)
    c = @stdin.getc
    result = c.nil? ? true : false
    @stdin.ungetc(c) unless c.nil?
    result
  else # buffer is empty
    false
  end
end
gets() 点击切换源代码

从此输入方法读取下一行。

有关更多信息,请参见 IO#gets。

# File irb/input-method.rb, line 69
def gets
  # Workaround for debug compatibility test https://github.com/ruby/debug/pull/1100
  puts if ENV['RUBY_DEBUG_TEST_UI']

  print @prompt
  line = @stdin.gets
  @line[@line_no += 1] = line
end
inspect() 点击切换源代码

用于调试消息

# File irb/input-method.rb, line 120
def inspect
  'StdioInputMethod'
end
line(line_no) 点击切换源代码

返回 io 的当前行号。

line 会统计调用 gets 的次数。

有关更多信息,请参见 IO#lineno。

# File irb/input-method.rb, line 110
def line(line_no)
  @line[line_no]
end
prompting?() 点击切换源代码
# File irb/input-method.rb, line 101
def prompting?
  STDIN.tty?
end
readable_after_eof?() 点击切换源代码

当没有更多数据可读时,此输入方法是否仍然可读。

有关更多信息,请参见 IO#eof。

# File irb/input-method.rb, line 97
def readable_after_eof?
  true
end