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