Module: IOExtras::AbstractInputStream
- Includes:
- Enumerable, FakeIO
- Included in:
- Zip::NullInputStream, Zip::ZipInputStream
- Defined in:
- lib/zip/ioextras.rb
Overview
Implements many of the convenience methods of IO such as gets, getc, readline and readlines depends on: input_finished?, produce_input and read
Instance Attribute Summary collapse
-
#lineno ⇒ Object
Returns the value of attribute lineno.
Instance Method Summary collapse
- #each_line(aSepString = $/) ⇒ Object (also: #each)
- #flush ⇒ Object
- #gets(aSepString = $/) ⇒ Object
- #initialize ⇒ Object
- #read(numberOfBytes = nil, buf = nil) ⇒ Object
- #readline(aSepString = $/) ⇒ Object
- #readlines(aSepString = $/) ⇒ Object
Methods included from FakeIO
Methods included from Enumerable
Instance Attribute Details
#lineno ⇒ Object
Returns the value of attribute lineno.
33 34 35 |
# File 'lib/zip/ioextras.rb', line 33 def lineno @lineno end |
Instance Method Details
#each_line(aSepString = $/) ⇒ Object Also known as: each
98 99 100 101 102 103 |
# File 'lib/zip/ioextras.rb', line 98 def each_line(aSepString = $/) while true yield readline(aSepString) end rescue EOFError end |
#flush ⇒ Object
86 87 88 89 90 |
# File 'lib/zip/ioextras.rb', line 86 def flush retVal=@outputBuffer @outputBuffer="" return retVal end |
#gets(aSepString = $/) ⇒ Object
69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
# File 'lib/zip/ioextras.rb', line 69 def gets(aSepString=$/) @lineno = @lineno.next return read if aSepString == nil aSepString="#{$/}#{$/}" if aSepString == "" bufferIndex=0 while ((matchIndex = @outputBuffer.index(aSepString, bufferIndex)) == nil) bufferIndex=@outputBuffer.length if input_finished? return @outputBuffer.empty? ? nil : flush end @outputBuffer << produce_input end sepIndex=matchIndex + aSepString.length return @outputBuffer.slice!(0...sepIndex) end |
#initialize ⇒ Object
27 28 29 30 31 |
# File 'lib/zip/ioextras.rb', line 27 def initialize super @lineno = 0 @outputBuffer = "" end |
#read(numberOfBytes = nil, buf = nil) ⇒ Object
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/zip/ioextras.rb', line 35 def read(numberOfBytes = nil, buf = nil) tbuf = nil if @outputBuffer.length > 0 if numberOfBytes <= @outputBuffer.length tbuf = @outputBuffer.slice!(0, numberOfBytes) else numberOfBytes -= @outputBuffer.length if (numberOfBytes) rbuf = sysread(numberOfBytes, buf) tbuf = @outputBuffer tbuf << rbuf if (rbuf) @outputBuffer = "" end else tbuf = sysread(numberOfBytes, buf) end return nil unless (tbuf) if buf buf.replace(tbuf) else buf = tbuf end buf end |
#readline(aSepString = $/) ⇒ Object
92 93 94 95 96 |
# File 'lib/zip/ioextras.rb', line 92 def readline(aSepString = $/) retVal = gets(aSepString) raise EOFError if retVal == nil return retVal end |
#readlines(aSepString = $/) ⇒ Object
63 64 65 66 67 |
# File 'lib/zip/ioextras.rb', line 63 def readlines(aSepString = $/) retVal = [] each_line(aSepString) { |line| retVal << line } return retVal end |