NovaBryan/EVE_Dump
Log | Files | 📦 下载最新源码 (.zip) | Refs | README

iterators.py (1342B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\carbon\common\stdlib\email\iterators.py
      2 __all__ = ['body_line_iterator', 'typed_subpart_iterator', 'walk']
      3 import sys
      4 from cStringIO import StringIO
      5 
      6 def walk(self):
      7     yield self
      8     if self.is_multipart():
      9         for subpart in self.get_payload():
     10             for subsubpart in subpart.walk():
     11                 yield subsubpart
     12 
     13 
     14 def body_line_iterator(msg, decode = False):
     15     for subpart in msg.walk():
     16         payload = subpart.get_payload(decode=decode)
     17         if isinstance(payload, basestring):
     18             for line in StringIO(payload):
     19                 yield line
     20 
     21 
     22 def typed_subpart_iterator(msg, maintype = 'text', subtype = None):
     23     for subpart in msg.walk():
     24         if subpart.get_content_maintype() == maintype:
     25             if subtype is None or subpart.get_content_subtype() == subtype:
     26                 yield subpart
     27 
     28 
     29 def _structure(msg, fp = None, level = 0, include_default = False):
     30     if fp is None:
     31         fp = sys.stdout
     32     tab = ' ' * (level * 4)
     33     print >> fp, tab + msg.get_content_type(),
     34     if include_default:
     35         print >> fp, '[%s]' % msg.get_default_type()
     36     else:
     37         print >> fp
     38     if msg.is_multipart():
     39         for subpart in msg.get_payload():
     40             _structure(subpart, fp, level + 1, include_default)