# -*- coding: utf-8 -*-
# Copyright(C) 2010-2011 Christophe Benz
#
# This file is part of weboob.
#
# weboob is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# weboob is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with weboob. If not, see
%s
' % self.header else: s += self.header s += "\n" table = PrettyTable(list(column_headers)) for column_header in column_headers: # API changed in python-prettytable. The try/except is a bad hack to support both versions # Note: two versions are not exactly the same... # (first one: header in center. Second one: left align for header too) try: table.set_field_align(column_header, 'l') except: table.align[column_header] = 'l' for line in queue: for _ in range(maxrow - len(line)): line += ('',) table.add_row([self.format_cell(cell) for cell in line]) if self.HTML: s += table.get_html_string() else: s += table.get_string() self.queue = [] return s def format_cell(self, cell): if isinstance(cell, list): return ', '.join(['%s' % item for item in cell]) return cell def format_dict(self, item): if self.keys is None: self.keys = list(item.keys()) self.queue.append(list(item.values())) def set_header(self, string): self.header = string class HTMLTableFormatter(TableFormatter): HTML = True def test(): from .iformatter import formatter_test_output as fmt assert fmt(TableFormatter, {'foo': 'bar'}) == \ '+-----+\n' \ '| Foo |\n' \ '+-----+\n' \ '| bar |\n' \ '+-----+\n'