class XMP::StringInputMethod

A custom InputMethod class used by XMP for evaluating string io.

Attributes

encoding[R]

Returns the encoding of last expression printed by puts.

Public Class Methods

new() click to toggle source

Creates a new StringInputMethod object

Calls superclass method IRB::InputMethod.new
# File lib/irb/xmp.rb, line 105
def initialize
 super
 @exps = []
end

Public Instance Methods

eof?() click to toggle source

Whether there are any expressions left in this printer.

# File lib/irb/xmp.rb, line 111
def eof?
 @exps.empty?
end
gets() click to toggle source

Reads the next expression from this printer.

See IO#gets for more information.

# File lib/irb/xmp.rb, line 118
def gets
 while l = @exps.shift
 next if /^\s+$/ =~ l
 l.concat "\n"
 print @prompt, l
 break
 end
 l
end
puts(exps) click to toggle source

Concatenates all expressions in this printer, separated by newlines.

An Encoding::CompatibilityError is raised of the given exps's encoding doesn't match the previous expression evaluated.

# File lib/irb/xmp.rb, line 132
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