类 XMP::StringInputMethod
一个自定义的 InputMethod 类,用于 XMP
评估字符串 io。
属性
encoding[R]
返回 puts
打印的最后一个表达式的编码。
公共类方法
new() 点击切换源代码
创建一个新的 StringInputMethod
对象
调用超类方法
BasicObject::new
# File lib/irb/xmp.rb, line 96 def initialize super @exps = [] end
公共实例方法
eof?() 点击切换源代码
此打印机中是否还有表达式。
# File lib/irb/xmp.rb, line 102 def eof? @exps.empty? end
gets() 点击切换源代码
从此打印机中读取下一个表达式。
有关更多信息,请参阅 IO#gets
。
# File lib/irb/xmp.rb, line 109 def gets while l = @exps.shift next if /^\s+$/ =~ l l.concat "\n" print @prompt, l break end l end
puts(exps) 点击切换源代码
将此打印机中的所有表达式连接起来,用换行符分隔。
如果给定 exps
的编码与之前评估的表达式的编码不匹配,则会引发 Encoding::CompatibilityError
。
# File lib/irb/xmp.rb, line 123 def puts(exps) if @encoding and exps.encoding != @encoding enc = Encoding.compatible?(@exps.join("\n"), exps) if enc.nil? raise Encoding::CompatibilityError, "Encoding in which the passed expression is encoded is not compatible to the preceding's one" else @encoding = enc end else @encoding = exps.encoding end @exps.concat exps.split(/\n/) end