home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2010 November / maximum-cd-2010-11.iso / DiscContents / calibre-0.7.13.msi / file_2847 (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2010-08-06  |  3.9 KB  |  108 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. from types import ListType, TupleType
  5. import re
  6. tspecials = re.compile('[ \\(\\)<>@,;:\\\\"/\\[\\]\\?=]')
  7.  
  8. def _formatparam(param, value = None, quote = 1):
  9.     if value is not None and len(value) > 0:
  10.         if quote or tspecials.search(value):
  11.             value = value.replace('\\', '\\\\').replace('"', '\\"')
  12.             return '%s="%s"' % (param, value)
  13.         return '%s=%s' % (param, value)
  14.     len(value) > 0
  15.     return param
  16.  
  17.  
  18. class Headers:
  19.     
  20.     def __init__(self, headers):
  21.         if type(headers) is not ListType:
  22.             raise TypeError('Headers must be a list of name/value tuples')
  23.         type(headers) is not ListType
  24.         self._headers = headers
  25.  
  26.     
  27.     def __len__(self):
  28.         return len(self._headers)
  29.  
  30.     
  31.     def __setitem__(self, name, val):
  32.         del self[name]
  33.         self._headers.append((name, val))
  34.  
  35.     
  36.     def __delitem__(self, name):
  37.         name = name.lower()
  38.         self._headers[:] = _[1]
  39.  
  40.     
  41.     def __getitem__(self, name):
  42.         return self.get(name)
  43.  
  44.     
  45.     def has_key(self, name):
  46.         return self.get(name) is not None
  47.  
  48.     __contains__ = has_key
  49.     
  50.     def get_all(self, name):
  51.         name = name.lower()
  52.         return _[1]
  53.  
  54.     
  55.     def get(self, name, default = None):
  56.         name = name.lower()
  57.         for k, v in self._headers:
  58.             if k.lower() == name:
  59.                 return v
  60.         
  61.         return default
  62.  
  63.     
  64.     def keys(self):
  65.         return [ k for k, v in self._headers ]
  66.  
  67.     
  68.     def values(self):
  69.         return [ v for k, v in self._headers ]
  70.  
  71.     
  72.     def items(self):
  73.         return self._headers[:]
  74.  
  75.     
  76.     def __repr__(self):
  77.         return 'Headers(%r)' % self._headers
  78.  
  79.     
  80.     def __str__(self):
  81.         return []([ '%s: %s' % kv for kv in self._headers ] + [
  82.             '',
  83.             ''])
  84.  
  85.     
  86.     def setdefault(self, name, value):
  87.         result = self.get(name)
  88.         if result is None:
  89.             self._headers.append((name, value))
  90.             return value
  91.         return result
  92.  
  93.     
  94.     def add_header(self, _name, _value, **_params):
  95.         parts = []
  96.         if _value is not None:
  97.             parts.append(_value)
  98.         
  99.         for k, v in _params.items():
  100.             if v is None:
  101.                 parts.append(k.replace('_', '-'))
  102.                 continue
  103.             parts.append(_formatparam(k.replace('_', '-'), v))
  104.         
  105.         self._headers.append((_name, '; '.join(parts)))
  106.  
  107.  
  108.