class LineInput
$Id: lineinput.rb 2226 2006-04-15 03:05:09Z aamine $
Copyright © 2002-2005 Minero Aoki
This program is free software. You can distribute/modify this program under the terms of the GNU LGPL, Lesser General Public License version 2.1.
Public Class Methods
new(f)
click to toggle source
# File lib/lineinput.rb, line 13 def initialize(f) @input = f @buf = [] @lineno = 0 @eof_p = false end
Public Instance Methods
each() { |line| ... }
click to toggle source
# File lib/lineinput.rb, line 51 def each while line = gets() yield line end end
eof?()
click to toggle source
# File lib/lineinput.rb, line 24 def eof? @eof_p end
getlines_until(re)
click to toggle source
# File lib/lineinput.rb, line 89 def getlines_until(re) buf = [] until_match(re) do |line| buf.push line end buf end
Also aliased as: break
getlines_while(re)
click to toggle source
# File lib/lineinput.rb, line 68 def getlines_while(re) buf = [] while_match(re) do |line| buf.push line end buf end
Also aliased as: span
gets()
click to toggle source
# File lib/lineinput.rb, line 32 def gets unless @buf.empty? @lineno += 1 return @buf.pop end return nil if @eof_p # to avoid ARGF blocking. line = @input.gets @eof_p = true unless line @lineno += 1 line end
inspect()
click to toggle source
# File lib/lineinput.rb, line 20 def inspect "\#<#{self.class} file=#{@input.inspect} line=#{lineno()}>" end
lineno()
click to toggle source
# File lib/lineinput.rb, line 28 def lineno @lineno end
ungets(line)
click to toggle source
# File lib/lineinput.rb, line 44 def ungets(line) return unless line @lineno -= 1 @buf.push line line end
until_match(re) { |line| ... }
click to toggle source
# File lib/lineinput.rb, line 78 def until_match(re) while line = gets() if re =~ line ungets line return end yield line end nil end
until_terminator(re) { |line| ... }
click to toggle source
# File lib/lineinput.rb, line 99 def until_terminator(re) while line = gets() return if re =~ line # discard terminal line yield line end nil end
while_match(re) { |line| ... }
click to toggle source
# File lib/lineinput.rb, line 57 def while_match(re) while line = gets() unless re =~ line ungets line return end yield line end nil end