summaryrefslogtreecommitdiff
path: root/cliff/formatters/tablibformatters.py
diff options
context:
space:
mode:
authorDoug Hellmann <doug.hellmann@dreamhost.com>2012-05-06 20:06:17 -0400
committerDoug Hellmann <doug.hellmann@dreamhost.com>2012-05-06 20:06:17 -0400
commit6efada5b6a084e5e22e3b7a225375ff8132be255 (patch)
tree12075126f5e2bd3708ece4b1bbf995027b452320 /cliff/formatters/tablibformatters.py
parent2acfc3ce1e6d88a9acbd994360388927eb25c844 (diff)
downloadcliff-tablib-6efada5b6a084e5e22e3b7a225375ff8132be255.tar.gz
add yaml, json, and html formatters
Diffstat (limited to 'cliff/formatters/tablibformatters.py')
-rw-r--r--cliff/formatters/tablibformatters.py47
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