diff options
author | Guido van Rossum <guido@python.org> | 2001-05-15 15:34:07 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 2001-05-15 15:34:07 (GMT) |
commit | acfdf156aa4c2a9bd8d81972888c3ad21c1a2eba (patch) | |
tree | 7128181d993c50fb1cc1fbe8fe3739f440a8af2a /Lib/encodings | |
parent | c0dac1a58c894dc6b8866bb23df58878b12365df (diff) | |
download | cpython-acfdf156aa4c2a9bd8d81972888c3ad21c1a2eba.zip cpython-acfdf156aa4c2a9bd8d81972888c3ad21c1a2eba.tar.gz cpython-acfdf156aa4c2a9bd8d81972888c3ad21c1a2eba.tar.bz2 |
Add quoted-printable codec
Diffstat (limited to 'Lib/encodings')
-rw-r--r-- | Lib/encodings/aliases.py | 3 | ||||
-rw-r--r-- | Lib/encodings/quopri_codec.py | 56 |
2 files changed, 59 insertions, 0 deletions
diff --git a/Lib/encodings/aliases.py b/Lib/encodings/aliases.py index 5573f6d..6cf40b4 100644 --- a/Lib/encodings/aliases.py +++ b/Lib/encodings/aliases.py @@ -87,5 +87,8 @@ aliases = { 'zip': 'zlib_codec', 'hex': 'hex_codec', 'uu': 'uu_codec', + 'quopri': 'quopri_codec', + 'quotedprintable': 'quopri_codec', + 'quoted_printable': 'quopri_codec', } diff --git a/Lib/encodings/quopri_codec.py b/Lib/encodings/quopri_codec.py new file mode 100644 index 0000000..42074f4 --- /dev/null +++ b/Lib/encodings/quopri_codec.py @@ -0,0 +1,56 @@ +"""Codec for quoted-printable encoding. + +Like base64 and rot13, this returns Python strings, not Unicode. +""" + +import codecs, quopri +try: + from cStringIO import StringIO +except ImportError: + from StringIO import StringIO + +def quopri_encode(input, errors='strict'): + """Encode the input, returning a tuple (output object, length consumed). + + errors defines the error handling to apply. It defaults to + 'strict' handling which is the only currently supported + error handling for this codec. + + """ + assert errors == 'strict' + f = StringIO(input) + g = StringIO() + quopri.encode(f, g, 1) + output = g.getvalue() + return (output, len(input)) + +def quopri_decode(input, errors='strict'): + """Decode the input, returning a tuple (output object, length consumed). + + errors defines the error handling to apply. It defaults to + 'strict' handling which is the only currently supported + error handling for this codec. + + """ + assert errors == 'strict' + f = StringIO(input) + g = StringIO() + quopri.decode(f, g) + output = g.getvalue() + return (output, len(input)) + +class Codec(codecs.Codec): + + encode = quopri_encode + decode = quopri_decode + +class StreamWriter(Codec, codecs.StreamWriter): + pass + +class StreamReader(Codec,codecs.StreamReader): + pass + +# encodings module API + +def getregentry(): + return (quopri_encode, quopri_decode, StreamReader, StreamWriter) |