class Gherkin::TokenScanner

def read

def read
  location = {line: @line_number += 1, column: 0}
  if @io.nil? || line = @io.gets
    gherkin_line = line ? GherkinLine.new(line, location[:line]) : nil
    Token.new(gherkin_line, location)
  else
    @io.close unless @io.closed? # ARGF closes the last file after final gets
    @io = nil
    Token.new(nil, location)
  end
end