diff options
Diffstat (limited to 'cliff/formatters')
-rw-r--r-- | cliff/formatters/tablibformatters.py | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/cliff/formatters/tablibformatters.py b/cliff/formatters/tablibformatters.py new file mode 100644 index 0000000..5cc5489 --- /dev/null +++ b/cliff/formatters/tablibformatters.py @@ -0,0 +1,47 @@ +"""Output formatters using tablib. +""" + +from .base import ListFormatter, SingleFormatter + +import tablib + + +class TablibFormatterBase(ListFormatter, SingleFormatter): + + def add_argument_group(self, parser): + return + + def emit_list(self, column_names, data, stdout, parsed_args): + dataset = tablib.Dataset(headers=column_names) + for row in data: + dataset.append(row) + stdout.write(self._format_dataset(dataset)) + return + + def emit_one(self, column_names, data, stdout, parsed_args): + dataset = tablib.Dataset(headers=column_names) + for row in data: + dataset.append(row) + stdout.write(self._format_dataset(dataset)) + return + + +class YamlFormatter(TablibFormatterBase): + """YAML output""" + + def _format_dataset(self, dataset): + return dataset.yaml + + +class HtmlFormatter(TablibFormatterBase): + """HTML output""" + + def _format_dataset(self, dataset): + return dataset.html + + +class JsonFormatter(TablibFormatterBase): + """JSON output""" + + def _format_dataset(self, dataset): + return dataset.json |