class Stark::Rack::Metadata::RewindableInput

Public Class Methods

new(io) click to toggle source
# File lib/stark/rack/metadata.rb, line 59
def initialize(io)
  @io = io
  @buffered = StringIO.new
end

Public Instance Methods

read(n) click to toggle source
# File lib/stark/rack/metadata.rb, line 64
def read(n)
  if @io
    @io.read(n).tap do |s|
      if s
        @buffered.write s
      else
        @io.close
        @io = nil
      end
    end
  else
    @buffered.read(n)
  end
end
rewind() click to toggle source
# File lib/stark/rack/metadata.rb, line 79
def rewind
  if @io
    @io = CompositeReadIO.new([StringIO.new(@buffered.string), @io])
    @buffered = StringIO.new
  else
    @buffered.rewind
  end
end