Class
A custom InputMethod class used by XMP
for evaluating string io.
Attributes
Class Methods
::
lib/irb/xmp.rb
View on GitHub
# File tmp/rubies/ruby-3.1.3/lib/irb/xmp.rb, line 102
def initialize
super
@exps = []
end
Creates a new StringInputMethod
object
Instance Methods
#
lib/irb/xmp.rb
View on GitHub
# File tmp/rubies/ruby-3.1.3/lib/irb/xmp.rb, line 108
def eof?
@exps.empty?
end
Whether there are any expressions left in this printer.
#
lib/irb/xmp.rb
View on GitHub
# File tmp/rubies/ruby-3.1.3/lib/irb/xmp.rb, line 115
def gets
while l = @exps.shift
next if /^\s+$/ =~ l
l.concat "\n"
print @prompt, l
break
end
l
end
Reads the next expression from this printer.
See IO#gets
for more information.
lib/irb/xmp.rb
View on GitHub
# File tmp/rubies/ruby-3.1.3/lib/irb/xmp.rb, line 129
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
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.