(self, indent_level=None,
               eventual_encoding=DEFAULT_OUTPUT_ENCODING,
               formatter="minimal")
return s
Returns a Unicode representation of this tag and its contents.

        :param eventual_encoding: The tag is destined to be
           encoded into this encoding. This method is _not_
           responsible for performing that encoding. This information
           is passed in so that it can be substituted in if the
           document contains a <META> tag that mentions the document's
           encoding.
Returns a Unicode representation of this tag and its contents.
Returns a Unicode representation of this tag and its contents .
def decode(self, indent_level=None,
               eventual_encoding=DEFAULT_OUTPUT_ENCODING,
               formatter="minimal"):
        """Returns a Unicode representation of this tag and its contents.

        :param eventual_encoding: The tag is destined to be
           encoded into this encoding. This method is _not_
           responsible for performing that encoding. This information
           is passed in so that it can be substituted in if the
           document contains a <META> tag that mentions the document's
           encoding.
        """

        # First off, turn a string formatter into a function. This
        # will stop the lookup from happening over and over again.
        if not callable(formatter):
            formatter = self._formatter_for_name(formatter)

        attrs = []
        if self.attrs:
            for key, val in sorted(self.attrs.items()):
                if val is None:
                    decoded = key
                else:
                    if isinstance(val, list) or isinstance(val, tuple):
                        val = ' '.join(val)
                    elif not isinstance(val, basestring):
                        val = unicode(val)
                    elif (
                        isinstance(val, AttributeValueWithCharsetSubstitution)
                        and eventual_encoding is not None):
                        val = val.encode(eventual_encoding)

                    text = self.format_string(val, formatter)
                    decoded = (
                        unicode(key) + '='
                        + EntitySubstitution.quoted_attribute_value(text))
                attrs.append(decoded)
        close = ''
        closeTag = ''

        prefix = ''
        if self.prefix:
            prefix = self.prefix + ":"

        if self.is_empty_element:
            close = '/'
        else:
            closeTag = '</%s%s>' % (prefix, self.name)

        pretty_print = self._should_pretty_print(indent_level)
        space = ''
        indent_space = ''
        if indent_level is not None:
            indent_space = (' ' * (indent_level - 1))
        if pretty_print:
            space = indent_space
            indent_contents = indent_level + 1
        else:
            indent_contents = None
        contents = self.decode_contents(
            indent_contents, eventual_encoding, formatter)

        if self.hidden:
            # This is the 'document root' object.
            s = contents
        else:
            s = []
            attribute_string = ''
            if attrs:
                attribute_string = ' ' + ' '.join(attrs)
            if indent_level is not None:
                # Even if this particular tag is not pretty-printed,
                # we should indent up to the start of the tag.
                s.append(indent_space)
            s.append('<%s%s%s%s>' % (
                    prefix, self.name, attribute_string, close))
            if pretty_print:
                s.append("\n")
            s.append(contents)
            if pretty_print and contents and contents[-1] != "\n":
                s.append("\n")
            if pretty_print and closeTag:
                s.append(space)
            s.append(closeTag)
            if indent_level is not None and closeTag and self.next_sibling:
                # Even if this particular tag is not pretty-printed,
                # we're now done with the tag, and we should add a
                # newline if appropriate.
                s.append("\n")
            s = ''.join(s)
        return s
def decode ( self , indent_level = None , eventual_encoding = DEFAULT_OUTPUT_ENCODING , formatter = "minimal" ) : # First off, turn a string formatter into a function. This # will stop the lookup from happening over and over again. if not callable ( formatter ) : formatter = self . _formatter_for_name ( formatter ) attrs = [ ] if self . attrs : for key , val in sorted ( self . attrs . items ( ) ) : if val is None : decoded = key else : if isinstance ( val , list ) or isinstance ( val , tuple ) : val = ' ' . join ( val ) elif not isinstance ( val , basestring ) : val = unicode ( val ) elif ( isinstance ( val , AttributeValueWithCharsetSubstitution ) and eventual_encoding is not None ) : val = val . encode ( eventual_encoding ) text = self . format_string ( val , formatter ) decoded = ( unicode ( key ) + '=' + EntitySubstitution . quoted_attribute_value ( text ) ) attrs . append ( decoded ) close = '' closeTag = '' prefix = '' if self . prefix : prefix = self . prefix + ":" if self . is_empty_element : close = '/' else : closeTag = '</%s%s>' % ( prefix , self . name ) pretty_print = self . _should_pretty_print ( indent_level ) space = '' indent_space = '' if indent_level is not None : indent_space = ( ' ' * ( indent_level - 1 ) ) if pretty_print : space = indent_space indent_contents = indent_level + 1 else : indent_contents = None contents = self . decode_contents ( indent_contents , eventual_encoding , formatter ) if self . hidden : # This is the 'document root' object. s = contents else : s = [ ] attribute_string = '' if attrs : attribute_string = ' ' + ' ' . join ( attrs ) if indent_level is not None : # Even if this particular tag is not pretty-printed, # we should indent up to the start of the tag. s . append ( indent_space ) s . append ( '<%s%s%s%s>' % ( prefix , self . name , attribute_string , close ) ) if pretty_print : s . append ( "\n" ) s . append ( contents ) if pretty_print and contents and contents [ - 1 ] != "\n" : s . append ( "\n" ) if pretty_print and closeTag : s . append ( space ) s . append ( closeTag ) if indent_level is not None and closeTag and self . next_sibling : # Even if this particular tag is not pretty-printed, # we're now done with the tag, and we should add a # newline if appropriate. s . append ( "\n" ) s = '' . join ( s ) return s