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