类 IRB::OutputMethod

irb 中 IO 的抽象输出类。主要用于 IRB::Notifier 的内部。您可以定义自己的输出方法,并使用 Irb.newContext.new 来使用它。

公共实例方法

parse_printf_format(format, opts) 点击切换源代码

如果在给定的 format 中,来自 printfRegexp 匹配成功,则返回一个包含给定 formatopts 的数组,供 Kernel#sprintf 使用。

%
<flag>  [#0- +]
<minimum field width> (\*|\*[1-9][0-9]*\$|[1-9][0-9]*)
<precision>.(\*|\*[1-9][0-9]*\$|[1-9][0-9]*|)?
#<length modifier>(hh|h|l|ll|L|q|j|z|t)
<conversion specifier>[diouxXeEfgGcsb%]
# File lib/irb/output-method.rb, line 48
def parse_printf_format(format, opts)
  return format, opts if $1.size % 2 == 1
end
pp(*objs) 点击切换源代码

打印给定的 objs,对每个对象调用 Object#inspect

有关更多详细信息,请参阅 puts

# File lib/irb/output-method.rb, line 64
def pp(*objs)
  puts(*objs.collect{|obj| obj.inspect})
end
ppx(prefix, *objs) 点击切换源代码

打印给定的 objs,对每个对象调用 Object#inspect,并在末尾添加给定的 prefix

有关更多详细信息,请参阅 puts

# File lib/irb/output-method.rb, line 72
def ppx(prefix, *objs)
  puts(*objs.collect{|obj| prefix+obj.inspect})
end
print(*opts) 点击切换源代码

打开此方法以实现您自己的输出方法,如果您没有在自己的类中定义 print,则会引发 NotImplementedError

printf(format, *opts) 点击切换源代码

扩展 IO#printf,使用 parse_printf_formatKernel#sprintf 格式化给定的 opts

# File lib/irb/output-method.rb, line 31
def printf(format, *opts)
  if /(%*)%I/ =~ format
    format, opts = parse_printf_format(format, opts)
  end
  print sprintf(format, *opts)
end
printn(*opts) 点击切换源代码

打印给定的 opts,并以换行符作为分隔符。

# File lib/irb/output-method.rb, line 25
def printn(*opts)
  print opts.join(" "), "\n"
end
puts(*objs) 点击切换源代码

对给定的 objs 中的每个元素调用 print,并在其后添加一个换行符。

# File lib/irb/output-method.rb, line 54
def puts(*objs)
  for obj in objs
    print(*obj)
    print "\n"
  end
end