123456789_123456789_123456789_123456789_123456789_

Class: Rack::Lint::Wrapper::InputWrapper

Do not use. This class is for internal use only.
Relationships & Source Files
Inherits: Object
Defined in: lib/rack/lint.rb

Class Method Summary

Instance Method Summary

Constructor Details

.new(input) ⇒ InputWrapper

[ GitHub ]

  
# File 'lib/rack/lint.rb', line 497

def initialize(input)
  @input = input
end

Instance Method Details

#close(*args)

  • close can be called on the input stream to indicate that any remaining input is not needed.

[ GitHub ]

  
# File 'lib/rack/lint.rb', line 564

def close(*args)
  @input.close(*args)
end

#each(*args)

  • each must be called without arguments and only yield String values.

Raises:

[ GitHub ]

  
# File 'lib/rack/lint.rb', line 553

def each(*args)
  raise LintError, "rack.input#each called with arguments" unless args.size == 0
  @input.each do |line|
    unless line.kind_of? String
      raise LintError, "rack.input#each didn't yield a String"
    end
    yield line
  end
end

#gets(*args)

  • gets must be called without arguments and return a string, or nil on EOF.

Raises:

[ GitHub ]

  
# File 'lib/rack/lint.rb', line 502

def gets(*args)
  raise LintError, "rack.input#gets called with arguments" unless args.size == 0

  chunk = @input.gets

  unless chunk.nil? or chunk.kind_of? String
    raise LintError, "rack.input#gets didn't return a String"
  end

  chunk
end

#read(*args)

  • read behaves like IO#read. Its signature is read([length, [buffer]]).

    • If given, length must be a non-negative Integer (>= 0) or nil, and buffer must be a String and may not be nil.

    • If length is given and not nil, then this method reads at most length bytes from the input stream.

    • If length is not given or nil, then this method reads all data until EOF.

    • When EOF is reached, this method returns nil if length is given and not nil, or “” if length is not given or is nil.

    • If buffer is given, then the read data will be placed into buffer instead of a newly created String object.

[ GitHub ]

  
# File 'lib/rack/lint.rb', line 520

def read(*args)
  unless args.size <= 2
    raise LintError, "rack.input#read called with too many arguments"
  end
  if args.size >= 1
    unless args.first.kind_of?(Integer) || args.first.nil?
      raise LintError, "rack.input#read called with non-integer and non-nil length"
    end
    unless args.first.nil? || args.first >= 0
      raise LintError, "rack.input#read called with a negative length"
    end
  end
  if args.size >= 2
    unless args[1].kind_of?(String)
      raise LintError, "rack.input#read called with non-String buffer"
    end
  end

  chunk = @input.read(*args)

  unless chunk.nil? or chunk.kind_of? String
    raise LintError, "rack.input#read didn't return nil or a String"
  end
  if args[0].nil?
    unless !chunk.nil?
      raise LintError, "rack.input#read(nil) returned nil on EOF"
    end
  end

  chunk
end