Updated version of Cookie.py (rev. 2.29) from timo
diff --git a/Lib/Cookie.py b/Lib/Cookie.py
index 15c950a..956a909 100644
--- a/Lib/Cookie.py
+++ b/Lib/Cookie.py
@@ -26,7 +26,7 @@
 #
 ####
 # 
-# $Id$
+# Id: Cookie.py,v 2.29 2000/08/23 05:28:49 timo Exp 
 #   by Timothy O'Malley <timo@alum.mit.edu>
 #
 #  Cookie.py is a Python module for the handling of HTTP
@@ -34,7 +34,7 @@
 #  information on cookies.
 #
 #  The original idea to treat Cookies as a dictionary came from
-#  Dave Mitchel (davem@magnet.com) in 1995, when he released the
+#  Dave Mitchell (davem@magnet.com) in 1995, when he released the
 #  first version of nscookie.py.
 #
 ####
@@ -69,7 +69,7 @@
    >>> C = Cookie.SmartCookie()
    >>> C["fig"] = "newton"
    >>> C["sugar"] = "wafer"
-   >>> C
+   >>> print C
    Set-Cookie: sugar=wafer;
    Set-Cookie: fig=newton;
 
@@ -92,7 +92,7 @@
 
    >>> C = Cookie.SmartCookie()
    >>> C.load("chips=ahoy; vienna=finger")
-   >>> C
+   >>> print C
    Set-Cookie: vienna=finger;
    Set-Cookie: chips=ahoy;
 
@@ -102,7 +102,7 @@
 
    >>> C = Cookie.SmartCookie()
    >>> C.load('keebler="E=everybody; L=\\"Loves\\"; fudge=\\012;";')
-   >>> C
+   >>> print C
    Set-Cookie: keebler="E=everybody; L=\"Loves\"; fudge=\012;";
 
 Each element of the Cookie also supports all of the RFC 2109
@@ -112,7 +112,7 @@
    >>> C = Cookie.SmartCookie()
    >>> C["oreo"] = "doublestuff"
    >>> C["oreo"]["path"] = "/"
-   >>> C
+   >>> print C
    Set-Cookie: oreo="doublestuff"; Path=/;
 
 Each dictionary element has a 'value' attribute, which gives you
@@ -144,7 +144,7 @@
    '7'
    >>> C["string"].value
    'seven'
-   >>> C
+   >>> print C
    Set-Cookie: number=7;
    Set-Cookie: string=seven;
 
@@ -165,7 +165,7 @@
    7
    >>> C["string"].value
    'seven'
-   >>> C
+   >>> print C
    Set-Cookie: number="I7\012.";
    Set-Cookie: string="S'seven'\012p1\012.";
 
@@ -190,7 +190,7 @@
    7
    >>> C["string"].value
    'seven'
-   >>> C
+   >>> print C
    Set-Cookie: number="I7\012.";
    Set-Cookie: string=seven;
 
@@ -309,7 +309,7 @@
     }
 
 def _quote(str, LegalChars=_LegalChars,
-           join=string.join, idmap=string._idmap, translate=string.translate):
+	   join=string.join, idmap=string._idmap, translate=string.translate):
     #
     # If the string does not need to be double-quoted,
     # then just return the string.  Otherwise, surround
@@ -317,9 +317,9 @@
     # special characters.
     #
     if "" == translate(str, idmap, LegalChars):
-        return str
+	return str
     else:
-        return '"' + join( map(_Translator.get, str, str), "" ) + '"'    
+	return '"' + join( map(_Translator.get, str, str), "" ) + '"'    
 # end _quote
 
 
@@ -440,7 +440,7 @@
     # end __setitem__
 
     def isReservedKey(self, K):
-        return string.lower(K) in self._reserved_keys
+	return string.lower(K) in self._reserved_keys
     # end isReservedKey
 
     def set(self, key, val, coded_val,
@@ -462,8 +462,12 @@
     def output(self, attrs=None, header = "Set-Cookie:"):
         return "%s %s" % ( header, self.OutputString(attrs) )
 
-    __repr__ = output
+    __str__ = output
 
+    def __repr__(self):
+        return '<%s: %s=%s>' % (self.__class__.__name__,
+                                self.key, repr(self.value) )
+    
     def js_output(self, attrs=None):
         # Print javascript
         return """
@@ -488,7 +492,7 @@
         if attrs == None:
             attrs = self._reserved_keys
         for K,V in self.items():
-            if not V: continue
+            if V == "": continue
             if K not in attrs: continue
             if K == "expires" and type(V) == type(1):
                 RA("%s=%s;" % (self._reserved[K], _getdate(V)))
@@ -585,8 +589,14 @@
         return string.join(result, sep)
     # end output
 
-    __repr__ = output
-        
+    __str__ = output
+
+    def __repr__(self):
+        L = []
+        for K,V in self.items():
+            L.append( '%s=%s' % (K,repr(V.value) ) )
+        return '<%s: %s>' % (self.__class__.__name__, string.join(L))
+    
     def js_output(self, attrs=None):
         """Return a string suitable for JavaScript."""
         result = []
@@ -630,13 +640,13 @@
                     M[ K[1:] ] = V
             elif string.lower(K) in Morsel._reserved_keys:
                 if M:
-                    M[ K ] = V
+                    M[ K ] = _unquote(V)
             else:
                 rval, cval = self.value_decode(V)
                 self.__set(K, rval, cval)
                 M = self[K]
                     
-        return
+	return
     # end __ParseString
 # end BaseCookie class
 
@@ -716,3 +726,7 @@
 #
 # should add a test routine?
 #
+
+#Local Variables:
+#tab-width: 4
+#end: