Class: Rack::Lint::InputWrapper
- Inherits:
-
Object
- Object
- Rack::Lint::InputWrapper
- Includes:
- Assertion
- Defined in:
- lib/rack/lint.rb
Instance Method Summary collapse
-
#close(*args) ⇒ Object
-
closemust never be called on the input stream.
-
-
#each(*args) ⇒ Object
-
eachmust be called without arguments and only yield Strings.
-
-
#gets(*args) ⇒ Object
-
getsmust be called without arguments and return a string, ornilon EOF.
-
-
#initialize(input) ⇒ InputWrapper
constructor
A new instance of InputWrapper.
-
#read(*args) ⇒ Object
-
readbehaves like IO#read.
-
-
#rewind(*args) ⇒ Object
-
rewindmust be called without arguments.
-
Methods included from Assertion
Constructor Details
#initialize(input) ⇒ InputWrapper
Returns a new instance of InputWrapper.
386 387 388 |
# File 'lib/rack/lint.rb', line 386 def initialize(input) @input = input end |
Instance Method Details
#close(*args) ⇒ Object
-
closemust never be called on the input stream.
477 478 479 |
# File 'lib/rack/lint.rb', line 477 def close(*args) raise LintError, "rack.input#close must not be called" end |
#each(*args) ⇒ Object
-
eachmust be called without arguments and only yield Strings.
451 452 453 454 455 456 457 458 459 |
# File 'lib/rack/lint.rb', line 451 def each(*args) raise LintError, "rack.input#each called with arguments" unless args.size == 0 @input.each { |line| unless line.kind_of? String raise LintError, "rack.input#each didn't yield a String" end yield line } end |
#gets(*args) ⇒ Object
-
getsmust be called without arguments and return a string, ornilon EOF.
392 393 394 395 396 397 398 399 |
# File 'lib/rack/lint.rb', line 392 def gets(*args) raise LintError, "rack.input#gets called with arguments" unless args.size == 0 v = @input.gets unless v.nil? or v.kind_of? String raise LintError, "rack.input#gets didn't return a String" end v end |
#read(*args) ⇒ Object
-
readbehaves like IO#read. Its signature isread([length, [buffer]]).If given,
lengthmust be a non-negative Integer (>= 0) ornil, andbuffermust be a String and may not be nil.If
lengthis given and not nil, then this method reads at mostlengthbytes from the input stream.If
lengthis not given or nil, then this method reads all data until EOF.When EOF is reached, this method returns nil if
lengthis given and not nil, or “” iflengthis not given or is nil.If
bufferis given, then the read data will be placed intobufferinstead of a newly created String object.
418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 |
# File 'lib/rack/lint.rb', line 418 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 v = @input.read(*args) unless v.nil? or v.kind_of? String raise LintError, "rack.input#read didn't return nil or a String" end if args[0].nil? unless !v.nil? raise LintError, "rack.input#read(nil) returned nil on EOF" end end v end |
#rewind(*args) ⇒ Object
-
rewindmust be called without arguments. It rewinds the input stream back to the beginning. It must not raise Errno::ESPIPE: that is, it may not be a pipe or a socket. Therefore, handler developers must buffer the input data into some rewindable object if the underlying input stream is not rewindable.
466 467 468 469 470 471 472 473 474 |
# File 'lib/rack/lint.rb', line 466 def rewind(*args) raise LintError, "rack.input#rewind called with arguments" unless args.size == 0 begin @input.rewind true rescue Errno::ESPIPE raise LintError, "rack.input#rewind raised Errno::ESPIPE" end end |