Class: CsvReader::Buffer

Inherits:
Object
  • Object
show all
Defined in:
lib/csvreader/buffer.rb

Instance Method Summary collapse

Constructor Details

#initialize(data) ⇒ Buffer

todo: find a better name:

BufferedReader
BufferedInput
BufferI
  • why? why not? is really just for reading (keep io?)



10
11
12
13
14
# File 'lib/csvreader/buffer.rb', line 10

def initialize( data )
  # create the IO object we will read from
  @io = data.is_a?(String) ? StringIO.new(data) : data
  @buf = [] ## last (buffer) chars (used for peek)
end

Instance Method Details

#eof?Boolean

Returns:

  • (Boolean)


16
# File 'lib/csvreader/buffer.rb', line 16

def eof?()   @buf.size == 0 && @io.eof?;  end

#getcObject



18
19
20
21
22
23
24
# File 'lib/csvreader/buffer.rb', line 18

def getc
  if @buf.size > 0
    @buf.shift  ## get first char from buffer
  else
    @io.getc
  end
end

#peekObject

method getc



26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/csvreader/buffer.rb', line 26

def peek
  if @buf.size == 0 && @io.eof?
    ## puts "peek - hitting eof!!!"
    return  "\0"   ## return NUL char (0) for now
  end

  if @buf.size == 0
     c = @io.getc
     @buf.push( c )
     ## puts "peek - fill buffer >#{c}< (#{c.ord})"
  end

  @buf.first
end