class WebAgent::Cookie

def discard?

def discard?
  @discard
end

def domain_orig?

def domain_orig?
  @domain_orig
end

def flag

def flag
  flg = 0
  flg += USE  if @use
  flg += SECURE  if @secure
  flg += DOMAIN  if @domain_orig
  flg += PATH  if @path_orig
  flg += DISCARD if @discard
  flg += OVERRIDE if @override
  flg
end

def initialize()

def initialize()
  @discard = @use = @secure = @domain_orig = @path_orig = @override = nil
  @path = nil
end

def join_quotedstr(array, sep)

def join_quotedstr(array, sep)
  ret = Array.new()
  old_elem = nil
  array.each{|elem|
(elem.scan(/"/).length % 2) == 0
f old_elem
 old_elem << sep << elem
lse
 ret << elem
 old_elem = nil
nd  
e
f old_elem
 old_elem << sep << elem
 ret << old_elem
 old_elem = nil
lse
 old_elem = elem.dup
nd

  }
  ret
end

def match?(url)

def match?(url)
  domainname = url.host
  if (!domainname ||
domain_match(domainname, @domain) ||
@path && !head_match?(@path, url.path)) ||
@secure && (url.scheme != 'https')) )
urn false
  else
urn true
  end
end

def override?

def override?
  @override
end

def parse(str, url)

def parse(str, url)
  @url = url
  cookie_elem = str.split(/;/)
  cookie_elem = join_quotedstr(cookie_elem, ';')
  first_elem = cookie_elem.shift
  if first_elem !~ /([^=]*)(\=(.*))?/
urn
raise ArgumentError 'invalid cookie value'
  end
  @name = $1.strip
  @value = $3
  if @value
@value =~ /^\s*"(.*)"\s*$/
value = $1
e
value.dup.strip!

  end
  cookie_elem.each{|pair|
, value = pair.split(/=/)  ## value may nil
.strip!
    if value
      value = value.strip.sub(/\A"(.*)"\z/) { $1 }
    end
e key.downcase
n 'domain'
domain = value
n 'expires'
egin
 @expires = Time.parse(value)
escue ArgumentError
 @expires = nil
nd
n 'path'
path = value
n 'secure'
secure = true  ## value may nil, but must 'true'.
e
# ignore

  }
end

def path_orig?

def path_orig?
  @path_orig
end

def secure?

def secure?
  @secure
end

def set_flag(flag)

def set_flag(flag)
  flag = flag.to_i
  @use = true      if flag & USE > 0
  @secure = true   if flag & SECURE > 0
  @domain_orig = true if flag & DOMAIN > 0
  @path_orig = true if flag & PATH > 0
  @discard  = true if flag & DISCARD > 0
  @override = true if flag & OVERRIDE > 0
end

def use?

def use?
  @use
end