[Python-checkins] CVS: python/dist/src/Doc/lib libmultifile.tex,1.7,1.8
Fred Drake
python-dev@python.org
Fri, 7 Apr 2000 12:10:02 -0400
Update of /projects/cvsroot/python/dist/src/Doc/lib
In directory seahag.cnri.reston.va.us:/home/fdrake/projects/python/Doc/lib
Modified Files:
libmultifile.tex
Log Message:
New example from Skip Montanaro <skip@mojam.com>.
Index: libmultifile.tex
===================================================================
RCS file: /projects/cvsroot/python/dist/src/Doc/lib/libmultifile.tex,v
retrieving revision 1.7
retrieving revision 1.8
diff -C2 -r1.7 -r1.8
*** libmultifile.tex 1999/04/23 14:46:18 1.7
--- libmultifile.tex 2000/04/07 16:09:59 1.8
***************
*** 133,160 ****
\subsection{\class{MultiFile} Example \label{multifile-example}}
- % This is almost unreadable; should be re-written when someone gets time.
-
\begin{verbatim}
! fp = MultiFile(sys.stdin, 0)
! fp.push(outer_boundary)
! message1 = fp.readlines()
! # We should now be either at real EOF or stopped on a message
! # boundary. Re-enable the outer boundary.
! fp.next()
! # Read another message with the same delimiter
! message2 = fp.readlines()
! # Re-enable that delimiter again
! fp.next()
! # Now look for a message subpart with a different boundary
! fp.push(inner_boundary)
! sub_header = fp.readlines()
! # If no exception has been thrown, we're looking at the start of
! # the message subpart. Reset and grab the subpart
! fp.next()
! sub_body = fp.readlines()
! # Got it. Now pop the inner boundary to re-enable the outer one.
! fp.pop()
! # Read to next outer boundary
! message3 = fp.readlines()
\end{verbatim}
--- 133,166 ----
\subsection{\class{MultiFile} Example \label{multifile-example}}
+ \sectionauthor{Skip Montanaro}{skip@mojam.org}
\begin{verbatim}
! import mimetools
! import MultiFile
! import StringIO
!
! def extract_mime_part_matching(stream, mimetype):
! """Return the first element in a multipart MIME message on stream
! matching mimetype."""
!
! msg = mimetools.Message(stream)
! msgtype = msg.gettype()
! params = msg.getplist()
!
! data = StringIO.StringIO()
! if msgtype[:10] == "multipart/":
!
! file = multifile.MultiFile(stream)
! file.push(msg.getparam("boundary"))
! while file.next():
! submsg = mimetools.Message(file)
! try:
! data = StringIO.StringIO()
! mimetools.decode(file, data, submsg.getencoding())
! except ValueError:
! continue
! if submsg.gettype() == mimetype:
! break
! file.pop()
! return data.getvalue()
\end{verbatim}