# Copyright (C) 2001,2002 Python Software Foundation
# Author: barry@zope.com (Barry Warsaw)

"""Class representing text/* type MIME documents.
"""

import warnings
from email.MIMENonMultipart import MIMENonMultipart
from email.Encoders import encode_7or8bit



class MIMEText(MIMENonMultipart):
    """Class for generating text/* type MIME documents."""

    def __init__(self, _text, _subtype='plain', _charset='us-ascii',
                 _encoder=None):
        """Create a text/* type MIME document.

        _text is the string for this message object.  If the text does not end
        in a newline, one is added.

        _subtype is the MIME sub content type, defaulting to "plain".

        _charset is the character set parameter added to the Content-Type
        header.  This defaults to "us-ascii".  Note that as a side-effect, the
        Content-Transfer-Encoding header will also be set.

        The use of the _encoder is deprecated.  The encoding of the payload,
        and the setting of the character set parameter now happens implicitly
        based on the _charset argument.  If _encoder is supplied, then a
        DeprecationWarning is used, and the _encoder functionality may
        override any header settings indicated by _charset.  This is probably
        not what you want.
        """
        MIMENonMultipart.__init__(self, 'text', _subtype,
                                  **{'charset': _charset})
        if _text and not _text.endswith('\n'):
            _text += '\n'
        self.set_payload(_text, _charset)
        if _encoder is not None:
            warnings.warn('_encoder argument is obsolete.',
                          DeprecationWarning, 2)
            # Because set_payload() with a _charset will set its own
            # Content-Transfer-Encoding header, we need to delete the
            # existing one or will end up with two of them. :(
            del self['content-transfer-encoding']
            _encoder(self)
