Class: XMP::StringInputMethod
| Relationships & Source Files | |
| Super Chains via Extension / Inclusion / Inheritance | |
| 
         Class Chain: 
        
          self,
          ::IRB::InputMethod
         
       | 
    |
| 
         Instance Chain: 
        
          self,
          ::IRB::InputMethod
         
       | 
    |
| Inherits: | 
        IRB::InputMethod
        
  | 
    
| Defined in: | lib/irb/xmp.rb | 
Overview
A custom InputMethod class used by ::XMP for evaluating string io.
Class Method Summary
- 
    
      .new  ⇒ StringInputMethod 
    
    constructor
    
Creates a new
StringInputMethodobject. 
::IRB::InputMethod - Inherited
| .new | Creates a new input method object.  | 
    
Instance Attribute Summary
- 
    
      #encoding  
    
    readonly
    
Returns the encoding of last expression printed by #puts.
 - 
    
      #eof?  ⇒ Boolean 
    
    readonly
    
Whether there are any expressions left in this printer.
 
::IRB::InputMethod - Inherited
| #prompt | The irb prompt associated with this input method.  | 
    
| #file_name | The file name of this input method, usually given during initialization.  | 
    
| #readable_after_eof? | Whether this input method is still readable when there is no more data to read.  | 
    
Instance Method Summary
- 
    
      #gets  
    
    
Reads the next expression from this printer.
 - 
    
      #puts(exps)  
    
    
Concatenates all expressions in this printer, separated by newlines.
 
::IRB::InputMethod - Inherited
| #gets | Reads the next line from this input method.  | 
    
Constructor Details
    .new  ⇒ StringInputMethod 
  
Creates a new StringInputMethod object
# File 'lib/irb/xmp.rb', line 102
def initialize super @exps = [] end
Instance Attribute Details
#encoding (readonly)
Returns the encoding of last expression printed by #puts.
# File 'lib/irb/xmp.rb', line 144
attr_reader :encoding
    #eof?  ⇒ Boolean  (readonly)
  
Whether there are any expressions left in this printer.
# File 'lib/irb/xmp.rb', line 108
def eof? @exps.empty? end
Instance Method Details
#gets
Reads the next expression from this printer.
See IO#gets for more information.
# File '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
#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 '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