In Files
- irb/xmp.rb
Parent
Class/Module Index
- IRB::Abort
- IRB::Context
- IRB::ContextExtender
- IRB::ExtendCommandBundle
- IRB::FileInputMethod
- IRB::Frame
- IRB::InputMethod
- IRB::Inspector
- IRB::Irb
- IRB::IrbLoader
- IRB::JobManager
- IRB::LoadAbort
- IRB::MethodExtender
- IRB::Notifier
- IRB::Notifier::AbstractNotifier
- IRB::Notifier::CompositeNotifier
- IRB::Notifier::LeveledNotifier
- IRB::Notifier::NoMsgNotifier
- IRB::OutputMethod
- IRB::ReadlineInputMethod
- IRB::StdioInputMethod
- IRB::StdioOutputMethod
- IRB::WorkSpace
- Object
- XMP
- XMP::StringInputMethod
XMP::StringInputMethod
A custom InputMethod class used by XMP for evaluating string io.
Attributes
Public Class Methods
new()
Creates a new StringInputMethod object
# File irb/xmp.rb, line 102 def initialize super @exps = [] end
Public Instance Methods
eof?()
Whether there are any expressions left in this printer.
# File irb/xmp.rb, line 108 def eof? @exps.empty? end
gets()
Reads the next expression from this printer.
See IO#gets for more information.
# File 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
puts(exps)
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 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