Mercurial > libervia-backend
annotate frontends/src/jp/output_std.py @ 2165:a0fbb2b11fd0
tools (common): fixed tty detection when isatty is not available
author | Goffi <goffi@goffi.org> |
---|---|
date | Thu, 23 Feb 2017 07:33:30 +0100 |
parents | 62dfa6e02f54 |
children | 9061c7247964 |
rev | line source |
---|---|
1950 | 1 #! /usr/bin/python |
2 # -*- coding: utf-8 -*- | |
3 | |
4 # jp: a SàT command line tool | |
5 # Copyright (C) 2009-2016 Jérôme Poisson (goffi@goffi.org) | |
6 | |
7 # This program is free software: you can redistribute it and/or modify | |
8 # it under the terms of the GNU Affero General Public License as published by | |
9 # the Free Software Foundation, either version 3 of the License, or | |
10 # (at your option) any later version. | |
11 | |
12 # This program is distributed in the hope that it will be useful, | |
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
15 # GNU Affero General Public License for more details. | |
16 | |
17 # You should have received a copy of the GNU Affero General Public License | |
18 # along with this program. If not, see <http://www.gnu.org/licenses/>. | |
19 """Standard outputs""" | |
20 | |
21 | |
22 from sat_frontends.jp.constants import Const as C | |
23 import json | |
24 | |
2156
8f96c242fa89
jp (outputs): added OUTPUT_COMPLEX type for data which are more complex than key/value dictionaries
Goffi <goffi@goffi.org>
parents:
1950
diff
changeset
|
25 __outputs__ = ["Simple", "Json"] |
8f96c242fa89
jp (outputs): added OUTPUT_COMPLEX type for data which are more complex than key/value dictionaries
Goffi <goffi@goffi.org>
parents:
1950
diff
changeset
|
26 SIMPLE = u'simple' |
1950 | 27 JSON = u'json' |
28 JSON_RAW = u'json_raw' | |
29 | |
30 | |
2156
8f96c242fa89
jp (outputs): added OUTPUT_COMPLEX type for data which are more complex than key/value dictionaries
Goffi <goffi@goffi.org>
parents:
1950
diff
changeset
|
31 class Simple(object): |
1950 | 32 """Default outputs""" |
33 | |
2161
62dfa6e02f54
jp (base, blog, output(std)): fixed bad unicode handling in stdout, use of jp.disp instead of simple print
Goffi <goffi@goffi.org>
parents:
2156
diff
changeset
|
34 def __init__(self, host): |
62dfa6e02f54
jp (base, blog, output(std)): fixed bad unicode handling in stdout, use of jp.disp instead of simple print
Goffi <goffi@goffi.org>
parents:
2156
diff
changeset
|
35 self.host = host |
62dfa6e02f54
jp (base, blog, output(std)): fixed bad unicode handling in stdout, use of jp.disp instead of simple print
Goffi <goffi@goffi.org>
parents:
2156
diff
changeset
|
36 host.register_output(C.OUTPUT_TEXT, SIMPLE, self.simple_print) |
62dfa6e02f54
jp (base, blog, output(std)): fixed bad unicode handling in stdout, use of jp.disp instead of simple print
Goffi <goffi@goffi.org>
parents:
2156
diff
changeset
|
37 host.register_output(C.OUTPUT_LIST, SIMPLE, self.list) |
62dfa6e02f54
jp (base, blog, output(std)): fixed bad unicode handling in stdout, use of jp.disp instead of simple print
Goffi <goffi@goffi.org>
parents:
2156
diff
changeset
|
38 host.register_output(C.OUTPUT_DICT, SIMPLE, self.dict) |
62dfa6e02f54
jp (base, blog, output(std)): fixed bad unicode handling in stdout, use of jp.disp instead of simple print
Goffi <goffi@goffi.org>
parents:
2156
diff
changeset
|
39 host.register_output(C.OUTPUT_COMPLEX, SIMPLE, self.simple_print) |
1950 | 40 |
2156
8f96c242fa89
jp (outputs): added OUTPUT_COMPLEX type for data which are more complex than key/value dictionaries
Goffi <goffi@goffi.org>
parents:
1950
diff
changeset
|
41 def simple_print(self, data): |
2161
62dfa6e02f54
jp (base, blog, output(std)): fixed bad unicode handling in stdout, use of jp.disp instead of simple print
Goffi <goffi@goffi.org>
parents:
2156
diff
changeset
|
42 self.host.disp(data) |
1950 | 43 |
44 def list(self, data): | |
2161
62dfa6e02f54
jp (base, blog, output(std)): fixed bad unicode handling in stdout, use of jp.disp instead of simple print
Goffi <goffi@goffi.org>
parents:
2156
diff
changeset
|
45 self.host.disp(u'\n'.join(data)) |
1950 | 46 |
2156
8f96c242fa89
jp (outputs): added OUTPUT_COMPLEX type for data which are more complex than key/value dictionaries
Goffi <goffi@goffi.org>
parents:
1950
diff
changeset
|
47 def dict(self, data): |
8f96c242fa89
jp (outputs): added OUTPUT_COMPLEX type for data which are more complex than key/value dictionaries
Goffi <goffi@goffi.org>
parents:
1950
diff
changeset
|
48 for k, v in data: |
2161
62dfa6e02f54
jp (base, blog, output(std)): fixed bad unicode handling in stdout, use of jp.disp instead of simple print
Goffi <goffi@goffi.org>
parents:
2156
diff
changeset
|
49 self.host.disp((u'{key}: {value}'.format(key=k, value=v))) |
2156
8f96c242fa89
jp (outputs): added OUTPUT_COMPLEX type for data which are more complex than key/value dictionaries
Goffi <goffi@goffi.org>
parents:
1950
diff
changeset
|
50 |
1950 | 51 |
52 class Json(object): | |
53 """outputs in json format""" | |
54 | |
2161
62dfa6e02f54
jp (base, blog, output(std)): fixed bad unicode handling in stdout, use of jp.disp instead of simple print
Goffi <goffi@goffi.org>
parents:
2156
diff
changeset
|
55 def __init__(self, host): |
62dfa6e02f54
jp (base, blog, output(std)): fixed bad unicode handling in stdout, use of jp.disp instead of simple print
Goffi <goffi@goffi.org>
parents:
2156
diff
changeset
|
56 self.host = host |
62dfa6e02f54
jp (base, blog, output(std)): fixed bad unicode handling in stdout, use of jp.disp instead of simple print
Goffi <goffi@goffi.org>
parents:
2156
diff
changeset
|
57 host.register_output(C.OUTPUT_TEXT, JSON, self.dump) |
62dfa6e02f54
jp (base, blog, output(std)): fixed bad unicode handling in stdout, use of jp.disp instead of simple print
Goffi <goffi@goffi.org>
parents:
2156
diff
changeset
|
58 host.register_output(C.OUTPUT_LIST, JSON, self.dump_pretty) |
62dfa6e02f54
jp (base, blog, output(std)): fixed bad unicode handling in stdout, use of jp.disp instead of simple print
Goffi <goffi@goffi.org>
parents:
2156
diff
changeset
|
59 host.register_output(C.OUTPUT_LIST, JSON_RAW, self.dump) |
62dfa6e02f54
jp (base, blog, output(std)): fixed bad unicode handling in stdout, use of jp.disp instead of simple print
Goffi <goffi@goffi.org>
parents:
2156
diff
changeset
|
60 host.register_output(C.OUTPUT_DICT, JSON, self.dump_pretty) |
62dfa6e02f54
jp (base, blog, output(std)): fixed bad unicode handling in stdout, use of jp.disp instead of simple print
Goffi <goffi@goffi.org>
parents:
2156
diff
changeset
|
61 host.register_output(C.OUTPUT_DICT, JSON_RAW, self.dump) |
62dfa6e02f54
jp (base, blog, output(std)): fixed bad unicode handling in stdout, use of jp.disp instead of simple print
Goffi <goffi@goffi.org>
parents:
2156
diff
changeset
|
62 host.register_output(C.OUTPUT_COMPLEX, JSON, self.dump_pretty) |
62dfa6e02f54
jp (base, blog, output(std)): fixed bad unicode handling in stdout, use of jp.disp instead of simple print
Goffi <goffi@goffi.org>
parents:
2156
diff
changeset
|
63 host.register_output(C.OUTPUT_COMPLEX, JSON_RAW, self.dump) |
1950 | 64 |
65 def dump(self, data): | |
2161
62dfa6e02f54
jp (base, blog, output(std)): fixed bad unicode handling in stdout, use of jp.disp instead of simple print
Goffi <goffi@goffi.org>
parents:
2156
diff
changeset
|
66 self.host.disp(json.dumps(data, default=str)) |
1950 | 67 |
68 def dump_pretty(self, data): | |
2161
62dfa6e02f54
jp (base, blog, output(std)): fixed bad unicode handling in stdout, use of jp.disp instead of simple print
Goffi <goffi@goffi.org>
parents:
2156
diff
changeset
|
69 self.host.disp(json.dumps(data, indent=4, default=str)) |