# File lib/netrc.rb, line 86
  def self.parse(ts)
    cur, item = [], []

    def ts.take
      if length < 1
        raise Error, "unexpected EOF"
      end
      shift
    end

    def ts.readto
      l = []
      while length > 0 && ! yield(self[0])
        l << shift
      end
      return l.join
    end

    pre = ts.readto{|t| t == "machine"}
    while ts.length > 0
      cur << ts.take + ts.readto{|t| ! skip?(t)}
      cur << ts.take
      if ts.include?('login')
        cur << ts.readto{|t| t == "login"} + ts.take + ts.readto{|t| ! skip?(t)}
        cur << ts.take
      end
      if ts.include?('password')
        cur << ts.readto{|t| t == "password"} + ts.take + ts.readto{|t| ! skip?(t)}
        cur << ts.take
      end
      cur << ts.readto{|t| t == "machine"}
      item << cur
      cur = []
    end

    [pre, item]
  end