summaryrefslogtreecommitdiffstats
path: root/cli_helpers/tabular_output/terminaltables_adapter.py
diff options
context:
space:
mode:
Diffstat (limited to 'cli_helpers/tabular_output/terminaltables_adapter.py')
-rw-r--r--cli_helpers/tabular_output/terminaltables_adapter.py97
1 files changed, 0 insertions, 97 deletions
diff --git a/cli_helpers/tabular_output/terminaltables_adapter.py b/cli_helpers/tabular_output/terminaltables_adapter.py
deleted file mode 100644
index b9c7497..0000000
--- a/cli_helpers/tabular_output/terminaltables_adapter.py
+++ /dev/null
@@ -1,97 +0,0 @@
-# -*- coding: utf-8 -*-
-"""Format adapter for the terminaltables module."""
-
-from __future__ import unicode_literals
-
-import terminaltables
-import itertools
-
-from cli_helpers.utils import filter_dict_by_key
-from cli_helpers.compat import (Terminal256Formatter, StringIO)
-from .preprocessors import (convert_to_string, truncate_string, override_missing_value,
- style_output, HAS_PYGMENTS,
- override_tab_value, escape_newlines)
-
-supported_formats = ('ascii', 'double', 'github')
-preprocessors = (
- override_missing_value, convert_to_string, override_tab_value,
- truncate_string, style_output, escape_newlines
-)
-
-table_format_handler = {
- 'ascii': terminaltables.AsciiTable,
- 'double': terminaltables.DoubleTable,
- 'github': terminaltables.GithubFlavoredMarkdownTable,
-}
-
-
-def style_output_table(format_name=""):
- def style_output(data, headers, style=None,
- table_separator_token='Token.Output.TableSeparator', **_):
- """Style the *table* (e.g. bold, italic, and colors)
-
- .. NOTE::
- This requires the `Pygments <http://pygments.org/>`_ library to
- be installed. You can install it with CLI Helpers as an extra::
- $ pip install cli_helpers[styles]
-
- Example usage::
-
- from cli_helpers.tabular_output import terminaltables_adapter
- from pygments.style import Style
- from pygments.token import Token
-
- class YourStyle(Style):
- default_style = ""
- styles = {
- Token.Output.TableSeparator: '#ansigray'
- }
-
- headers = ('First Name', 'Last Name')
- data = [['Fred', 'Roberts'], ['George', 'Smith']]
- style_output_table = terminaltables_adapter.style_output_table('psql')
- style_output_table(data, headers, style=CliStyle)
-
- output = terminaltables_adapter.adapter(data, headers, style=YourStyle)
-
- :param iterable data: An :term:`iterable` (e.g. list) of rows.
- :param iterable headers: The column headers.
- :param str/pygments.style.Style style: A Pygments style. You can `create
- your own styles <https://pygments.org/docs/styles#creating-own-styles>`_.
- :param str table_separator_token: The token type to be used for the table separator.
- :return: data and headers.
- :rtype: tuple
-
- """
- if style and HAS_PYGMENTS and format_name in supported_formats:
- formatter = Terminal256Formatter(style=style)
-
- def style_field(token, field):
- """Get the styled text for a *field* using *token* type."""
- s = StringIO()
- formatter.format(((token, field),), s)
- return s.getvalue()
-
- clss = table_format_handler[format_name]
- for char in [char for char in terminaltables.base_table.BaseTable.__dict__ if char.startswith("CHAR_")]:
- setattr(clss, char, style_field(
- table_separator_token, getattr(clss, char)))
-
- return iter(data), headers
- return style_output
-
-
-def adapter(data, headers, table_format=None, **kwargs):
- """Wrap terminaltables inside a function for TabularOutputFormatter."""
- keys = ('title', )
-
- table = table_format_handler[table_format]
-
- t = table([headers] + list(data), **filter_dict_by_key(kwargs, keys))
-
- dimensions = terminaltables.width_and_alignment.max_dimensions(
- t.table_data,
- t.padding_left,
- t.padding_right)[:3]
- for r in t.gen_table(*dimensions):
- yield u''.join(r)