each() { |line| ... }
click to toggle source
def each
while line = gets()
yield line
end
end
eof?()
click to toggle source
getblock(term_re)
click to toggle source
def getblock(term_re)
buf = []
until_terminator(term_re) do |line|
buf.push line
end
buf
end
getlines_until(re)
click to toggle source
def getlines_until(re)
buf = []
until_match(re) do |line|
buf.push line
end
buf
end
getlines_while(re)
click to toggle source
def getlines_while(re)
buf = []
while_match(re) do |line|
buf.push line
end
buf
end
gets()
click to toggle source
def gets
unless @buf.empty?
@lineno += 1
return @buf.pop
end
return nil if @eof_p
line = @input.gets
line = line.sub(/\r\n/, "\n") if line
@eof_p = line.nil?
@lineno += 1
line
end
gets_if(re)
click to toggle source
def gets_if(re)
line = gets()
if not line or not (re =~ line)
ungets line
return nil
end
line
end
gets_unless(re)
click to toggle source
def gets_unless(re)
line = gets()
if not line or re =~ line
ungets line
return nil
end
line
end
inspect()
click to toggle source
def inspect
"\#<#{self.class} file=#{@input.inspect} line=#{lineno()}>"
end
lineno()
click to toggle source
next?()
click to toggle source
def next?
peek() ? true : false
end
peek()
click to toggle source
def peek
line = gets()
ungets line if line
line
end
skip_blank_lines()
click to toggle source
def skip_blank_lines
n = 0
while line = gets()
unless line.strip.empty?
ungets line
return n
end
n += 1
end
n
end
ungets(line)
click to toggle source
def ungets(line)
return unless line
@lineno -= 1
@buf.push line
line
end
until_match(re) { |line| ... }
click to toggle source
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
def until_terminator(re)
while line = gets()
return if re =~ line
yield line
end
nil
end
while_match(re) { |line| ... }
click to toggle source
def while_match(re)
while line = gets()
unless re =~ line
ungets line
return
end
yield line
end
nil
end