类 IRB::StdioInputMethod

公共类方法

new() 点击切换源代码

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

# File lib/irb/input-method.rb, line 55
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 lib/irb/input-method.rb, line 104
def encoding
  @stdin.external_encoding
end
eof?() 点击切换源代码

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

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

# File lib/irb/input-method.rb, line 75
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 lib/irb/input-method.rb, line 65
def gets
  print @prompt
  line = @stdin.gets
  @line[@line_no += 1] = line
end
inspect() 点击切换源代码

用于调试消息

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

返回 io 的当前行号。

line 统计 gets 被调用的次数。

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

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

当不再有数据可读时,此输入方法是否仍然可读。

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

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