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
Instance Attribute Details
#lineno ⇒ Object
Returns the value of attribute lineno.
43 44 45 |
# File 'lib/zip/ioextras.rb', line 43 def lineno @lineno end |
Instance Method Details
#each_line(aSepString = $/) ⇒ Object Also known as: each
108 109 110 111 112 113 |
# File 'lib/zip/ioextras.rb', line 108 def each_line(aSepString = $/) while true yield readline(aSepString) end rescue EOFError end |
#flush ⇒ Object
96 97 98 99 100 |
# File 'lib/zip/ioextras.rb', line 96 def flush retVal = @outputBuffer @outputBuffer="" return retVal end |
#gets(aSepString = $/) ⇒ Object
79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
# File 'lib/zip/ioextras.rb', line 79 def gets(aSepString = $/) @lineno = @lineno.next return read if aSepString.nil? aSepString = "#{$/}#{$/}" if aSepString.empty? bufferIndex = 0 while ((matchIndex = @outputBuffer.index(aSepString, bufferIndex)) == nil) bufferIndex = @outputBuffer.bytesize if input_finished? return @outputBuffer.empty? ? nil : flush end @outputBuffer << produce_input end sepIndex = matchIndex + aSepString.bytesize return @outputBuffer.slice!(0...sepIndex) end |
#initialize ⇒ Object
37 38 39 40 41 |
# File 'lib/zip/ioextras.rb', line 37 def initialize super @lineno = 0 @outputBuffer = "" end |
#read(numberOfBytes = nil, buf = nil) ⇒ Object
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
# File 'lib/zip/ioextras.rb', line 45 def read(numberOfBytes = nil, buf = nil) tbuf = nil if @outputBuffer.bytesize > 0 if numberOfBytes <= @outputBuffer.bytesize tbuf = @outputBuffer.slice!(0, numberOfBytes) else numberOfBytes -= @outputBuffer.bytesize 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
102 103 104 105 106 |
# File 'lib/zip/ioextras.rb', line 102 def readline(aSepString = $/) retVal = gets(aSepString) raise EOFError if retVal == nil retVal end |
#readlines(aSepString = $/) ⇒ Object
73 74 75 76 77 |
# File 'lib/zip/ioextras.rb', line 73 def readlines(aSepString = $/) retVal = [] each_line(aSepString) { |line| retVal << line } retVal end |