# File lib/mechanize/cookie.rb, line 80
    def parse(uri, str, log = Mechanize.log)
      return str.split(/,(?=[^;,]*=)|,$/).map { |c|
        cookie_elem = c.split(/;+/)
        first_elem = cookie_elem.shift
        first_elem.strip!
        key, value = first_elem.split(/\=/, 2)

        begin
          cookie = new(key, value.dup)
        rescue
          log.warn("Couldn't parse key/value: #{first_elem}") if log
          next
        end

        cookie_elem.each do |pair|
          pair.strip!
          key, value = pair.split(/=/, 2)
          next unless key
          value = WEBrick::HTTPUtils.dequote(value.strip) if value

          case key.downcase
          when 'domain'
            next unless value && !value.empty?
            begin
              cookie.domain = value
              cookie.for_domain = true
            rescue
              log.warn("Couldn't parse domain: #{value}") if log
            end
          when 'path'
            next unless value && !value.empty?
            cookie.path = value
          when 'expires'
            next unless value && !value.empty?
            begin
              cookie.expires = Time::parse(value)
            rescue
              log.warn("Couldn't parse expires: #{value}") if log
            end
          when 'max-age'
            next unless value && !value.empty?
            begin
              cookie.max_age = Integer(value)
            rescue
              log.warn("Couldn't parse max age '#{value}'") if log
            end
          when 'comment'
            next unless value
            cookie.comment = value
          when 'version'
            next unless value
            begin
              cookie.version = Integer(value)
            rescue
              log.warn("Couldn't parse version '#{value}'") if log
              cookie.version = nil
            end
          when 'secure'
            cookie.secure = true
          end
        end

        cookie.path    ||= (uri + './').path
        cookie.secure  ||= false
        cookie.domain  ||= uri.host

        # RFC 6265 4.1.2.2
        cookie.expires   = Time.now + cookie.max_age if cookie.max_age
        cookie.session   = !cookie.expires

        # Move this in to the cookie jar
        yield cookie if block_given?

        cookie
      }
    end