module EDN
  class Reader

    def initialize(source)
      @parser = EDN.new_parser(source)
    end

    def read(eof_value = NOTHING)
      result = @parser.read
      if result == EOF 
        raise "Unexpected end of file" if eof_value == NOTHING
        return eof_value
      end
      result
    end

    def each
      until (result = @parser.read) == EOF
        yield result
      end
    end
  end
end