class ReVIEW::LineInput
Constants
- INVALID_CHARACTER_PATTERN
Attributes
lineno[R]
Public Class Methods
new(f)
click to toggle source
# File lib/review/lineinput.rb, line 16 def initialize(f) @input = f @buf = [] @lineno = 0 @eof_p = false end
Public Instance Methods
each() { |line| ... }
click to toggle source
# File lib/review/lineinput.rb, line 83 def each while line = gets yield line end end
eof?()
click to toggle source
# File lib/review/lineinput.rb, line 27 def eof? @eof_p end
gets()
click to toggle source
# File lib/review/lineinput.rb, line 43 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 invalid_char = lookup_invalid_char(line) if invalid_char raise SyntaxError, "found invalid control-sequence character (#{sprintf('%#x', invalid_char.codepoints[0])})." end line end
inspect()
click to toggle source
# File lib/review/lineinput.rb, line 23 def inspect "#<#{self.class} file=#{@input.inspect} line=#{lineno}>" end
next?()
click to toggle source
# File lib/review/lineinput.rb, line 67 def next? peek ? true : false end
peek()
click to toggle source
# File lib/review/lineinput.rb, line 61 def peek line = gets ungets(line) if line line end
skip_blank_lines()
click to toggle source
# File lib/review/lineinput.rb, line 71 def skip_blank_lines n = 0 while line = gets unless line.strip.empty? ungets(line) return n end n += 1 end n end
skip_comment_lines()
click to toggle source
# File lib/review/lineinput.rb, line 31 def skip_comment_lines n = 0 while line = gets unless /\A\#@/.match?(line.strip) ungets(line) return n end n += 1 end n end
until_match(re) { |line| ... }
click to toggle source
# File lib/review/lineinput.rb, line 100 def until_match(re) while line = gets if re&.match?(line) ungets(line) return end yield line end nil end
while_match(re) { |line| ... }
click to toggle source
# File lib/review/lineinput.rb, line 89 def while_match(re) while line = gets unless re&.match?(line) ungets(line) return end yield line end nil end
Private Instance Methods
lookup_invalid_char(line)
click to toggle source
# File lib/review/lineinput.rb, line 121 def lookup_invalid_char(line) if line =~ INVALID_CHARACTER_PATTERN $& end end
ungets(line)
click to toggle source
# File lib/review/lineinput.rb, line 113 def ungets(line) return unless line @lineno -= 1 @buf.push(line) line end