class Rucc::FileIOList

Public Class Methods

new(file) click to toggle source

@param [FileIO] file

# File lib/rucc/file_io_list.rb, line 8
def initialize(file)
  @files = [file]
  @stashed = []  # buffer for stashed files
end

Public Instance Methods

current() click to toggle source

@return [FileIO]

# File lib/rucc/file_io_list.rb, line 15
def current
  @files.last
end
readc() click to toggle source

@return [Char, NilClass]

# File lib/rucc/file_io_list.rb, line 20
def readc
  while true
    c = current.readc
    if !c.nil?  # not EOF
      return c
    end

    if @files.size == 1
      return c
    end
    f = @files.pop
    f.close
    next
  end
  raise "Must not reach here!"
end
stream_depth() click to toggle source
# File lib/rucc/file_io_list.rb, line 52
def stream_depth
  @files.size
end
stream_stash(files) click to toggle source

@param [<FileIO>] files

# File lib/rucc/file_io_list.rb, line 43
def stream_stash(files)
  @stashed.push(@files)
  @files = files
end
stream_unstash() click to toggle source
# File lib/rucc/file_io_list.rb, line 48
def stream_unstash
  @files = @stashed.pop
end
unreadc(c) click to toggle source

@param [Char, NilClass]

# File lib/rucc/file_io_list.rb, line 38
def unreadc(c)
  current.unreadc(c)
end