Module: IOExtras::AbstractInputStream
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
Instance Method Summary
collapse
Methods included from FakeIO
#kind_of?
Methods included from Enumerable
#deep_clone, #deep_dup, #inject, #select_map
Instance Attribute Details
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
|
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
|