'Display a list of parser with its title
* out: output file
* title : title of the list to display
* format: "rest", "trac", "file-ext", "mime" or "one_line" (default)'

def print_(self, title=None, out=None, verbose=False, format='one-line'):

    if (out is None):
        out = sys.stdout
    if (format in ('file-ext', 'mime')):
        extensions = set()
        for parser in self:
            file_ext = parser.getParserTags().get(format, ())
            file_ext = list(file_ext)
            try:
                file_ext.remove('')
            except ValueError:
                pass
            extensions |= set(file_ext)
        extensions -= set(('',))
        extensions = list(extensions)
        extensions.sort()
        text = ',    '.join((str(item) for item in extensions))
        if (format == 'file-ext'):
            print >>out, ('File    extensions:    %s.' % text)
            print >>out
            print >>out, ('Total:    %s    file    extensions.' % len(extensions))
        else:
            print >>out, ('MIME    types:    %s.' % text)
            print >>out
            print >>out, ('Total:    %s    MIME    types.' % len(extensions))
        return
    if (format == 'trac'):
        print >>out, '==    List    of    parsers    =='
        print >>out
        print >>out, ('Total:    %s    parsers' % len(self.parser_list))
        print >>out
    elif (format == 'one_line'):
        if title:
            print >>out, title
        else:
            print >>out, _('List    of    Hachoir    parsers.')
        print >>out
    bycategory = self.bytag['category']
    for category in sorted(bycategory.iterkeys()):
        if (format == 'one_line'):
            parser_list = [parser.PARSER_TAGS['id'] for parser in bycategory[category]]
            parser_list.sort()
            print >>out, ('-    %s:    %s' % (category.title(), ',    '.join(parser_list)))
        else:
            if (format == 'rest'):
                print >>out, category.replace('_', '    ').title()
                print >>out, ('-' * len(category))
                print >>out
            elif (format == 'trac'):
                print >>out, ('===    %s    ===' % category.replace('_', '    ').title())
                print >>out
            else:
                print >>out, ('[%s]' % category)
            parser_list = sorted(bycategory[category], key=(lambda parser: parser.PARSER_TAGS['id']))
            if (format == 'rest'):
                for parser in parser_list:
                    tags = parser.getParserTags()
                    print >>out, ('*    %s:    %s' % (tags['id'], tags['description']))
            elif (format == 'trac'):
                for parser in parser_list:
                    tags = parser.getParserTags()
                    desc = tags['description']
                    desc = re.sub('([A-Z][a-z]+[A-Z][^    ]+)', '!\\1', desc)
                    print >>out, ('    *    %s:    %s' % (tags['id'], desc))
            else:
                for parser in parser_list:
                    parser.print_(out, verbose)
            print >>out
    if (format != 'trac'):
        print >>out, ('Total:    %s    parsers' % len(self.parser_list))
