class NestedText::LineScanner
Public Class Methods
new(io)
click to toggle source
# File lib/nestedtext/scanners.rb, line 7 def initialize(io) @io = io @next_line = nil prepare_next_line end
Public Instance Methods
empty?()
click to toggle source
# File lib/nestedtext/scanners.rb, line 13 def empty? @next_line.nil? end
peek()
click to toggle source
# File lib/nestedtext/scanners.rb, line 26 def peek @next_line end
read_next()
click to toggle source
# File lib/nestedtext/scanners.rb, line 17 def read_next raise Errors::AssertionLineScannerIsEmptyError if empty? line = @next_line prepare_next_line line.prev.prev = nil unless line.prev.nil? # GC: break the chain line end
Private Instance Methods
prepare_next_line()
click to toggle source
# File lib/nestedtext/scanners.rb, line 32 def prepare_next_line line = nil loop do linestr = @io.gets&.chomp lineno = @io.lineno - 1 # Be 0-based line = linestr.nil? ? nil : Line.new(linestr, lineno, @next_line) break if line.nil? || !%i[blank comment].include?(line.tag) end @next_line = line end