summaryrefslogtreecommitdiff
path: root/clifftablib
diff options
context:
space:
mode:
authorDoug Hellmann <doug.hellmann@dreamhost.com>2012-07-31 14:01:39 -0400
committerDoug Hellmann <doug.hellmann@dreamhost.com>2012-07-31 15:12:19 -0400
commit8896e385ebc963145677303bf8d6eb134dcf582c (patch)
tree1dce3d965f14f8b9dc27e5ba9b56e2b084014638 /clifftablib
parentce0aa4609c76e60ea580afcfee1f8103931b0fee (diff)
downloadcliff-tablib-8896e385ebc963145677303bf8d6eb134dcf582c.tar.gz
Start cliff-tablib repo
This repo is a fork of the original cliff repo, with the cliff parts removed and the rest changed to just package the tablib-based formatters. Signed-off-by: Doug Hellmann <doug.hellmann@dreamhost.com>
Diffstat (limited to 'clifftablib')
-rw-r--r--clifftablib/__init__.py0
-rw-r--r--clifftablib/formatters.py49
2 files changed, 49 insertions, 0 deletions
diff --git a/clifftablib/__init__.py b/clifftablib/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/clifftablib/__init__.py
diff --git a/clifftablib/formatters.py b/clifftablib/formatters.py
new file mode 100644
index 0000000..d7e5ca0
--- /dev/null
+++ b/clifftablib/formatters.py
@@ -0,0 +1,49 @@
+"""Output formatters using tablib.
+"""
+
+from cliff.formatters.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))
+ stdout.write('\n')
+ return
+
+ def emit_one(self, column_names, data, stdout, parsed_args):
+ dataset = tablib.Dataset(headers=('Field', 'Value'))
+ for name, value in zip(column_names, data):
+ dataset.append((name, value))
+ stdout.write(self._format_dataset(dataset))
+ stdout.write('\n')
+ 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