Class: XMP::StringInputMethod (Ruby 2.7.5)
Description: Class : XMP::StringInputMethod - Ruby 2.7.5

### Home Classes Methods

### In Files

- irb/xmp.rb

### Parent

IRB::InputMethod

### Methods

- ::new
- #eof?
- #gets
- #puts

### Class/Module Index

Quicksearch

- Binding
- IRB::Abort
- IRB::Canvas
- IRB::Color
- IRB::Color::SymbolState
- IRB::Context
- IRB::ContextExtender
- IRB::ExtendCommandBundle
- IRB::FileInputMethod
- IRB::Frame
- IRB::Frame::FrameOverflow
- IRB::Frame::FrameUnderflow
- IRB::History
- IRB::InputMethod
- IRB::Inspector
- IRB::Irb
- IRB::IrbLoader
- IRB::JobManager
- IRB::LoadAbort
- IRB::MethodExtender
- IRB::Notifier
- IRB::Notifier::AbstractNotifier
- IRB::Notifier::CompositeNotifier
- IRB::Notifier::ErrUndefinedNotifier
- IRB::Notifier::ErrUnrecognizedLevel
- IRB::Notifier::LeveledNotifier
- IRB::Notifier::NoMsgNotifier
- IRB::OutputMethod
- IRB::OutputMethod::NotImplementedError
- IRB::ReadlineInputMethod
- IRB::ReidlineInputMethod
- IRB::RubyModel
- IRB::StdioInputMethod
- IRB::StdioOutputMethod
- IRB::Vec
- IRB::WorkSpace
- Object
- XMP
- XMP::StringInputMethod

No matching classes.

# 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

                   # File irb/xmp.rb, line 102
    def initialize
      super
      @exps = []
    end

### Public Instance Methods

eof?() click to toggle source

Whether there are any expressions left in this printer.

                   # File irb/xmp.rb, line 108
    def eof?
      @exps.empty?
    end

gets() click to toggle source

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) 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 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