jp (outputs): added OUTPUT_COMPLEX type for data which are more complex than key/value dictionaries
This commit is contained in:
parent
127744dd5b
commit
97cf0e6e01
2 changed files with 20 additions and 10 deletions
|
|
@ -26,9 +26,10 @@ class Const(constants.Const):
|
|||
PLUGIN_CMD = "commands"
|
||||
PLUGIN_OUTPUT = "outputs"
|
||||
OUTPUT_TEXT = 'text' # blob of unicode text
|
||||
OUTPUT_DICT = 'dict'
|
||||
OUTPUT_DICT = 'dict' # simple key/value dictionary
|
||||
OUTPUT_LIST = 'list'
|
||||
OUTPUT_TYPES = (OUTPUT_TEXT, OUTPUT_DICT, OUTPUT_LIST)
|
||||
OUTPUT_COMPLEX = 'complex' # complex data (e.g. multi-level dictionary)
|
||||
OUTPUT_TYPES = (OUTPUT_TEXT, OUTPUT_DICT, OUTPUT_LIST, OUTPUT_COMPLEX)
|
||||
|
||||
# exit codes
|
||||
EXIT_OK = 0
|
||||
|
|
|
|||
|
|
@ -22,37 +22,46 @@
|
|||
from sat_frontends.jp.constants import Const as C
|
||||
import json
|
||||
|
||||
__outputs__ = ["Default", "Json"]
|
||||
DEFAULT = u'default'
|
||||
__outputs__ = ["Simple", "Json"]
|
||||
SIMPLE = u'simple'
|
||||
JSON = u'json'
|
||||
JSON_RAW = u'json_raw'
|
||||
|
||||
|
||||
class Default(object):
|
||||
class Simple(object):
|
||||
"""Default outputs"""
|
||||
|
||||
def __init__(self, jp):
|
||||
jp.register_output(C.OUTPUT_TEXT, DEFAULT, self.text)
|
||||
jp.register_output(C.OUTPUT_LIST, DEFAULT, self.list)
|
||||
jp.register_output(C.OUTPUT_TEXT, SIMPLE, self.simple_print)
|
||||
jp.register_output(C.OUTPUT_LIST, SIMPLE, self.list)
|
||||
jp.register_output(C.OUTPUT_DICT, SIMPLE, self.dict)
|
||||
jp.register_output(C.OUTPUT_COMPLEX, SIMPLE, self.simple_print)
|
||||
|
||||
def text(self, data):
|
||||
def simple_print(self, data):
|
||||
print data
|
||||
|
||||
def list(self, data):
|
||||
print u'\n'.join(data)
|
||||
|
||||
def dict(self, data):
|
||||
for k, v in data:
|
||||
print(u'{key}: {value}'.format(key=k, value=v))
|
||||
|
||||
|
||||
class Json(object):
|
||||
"""outputs in json format"""
|
||||
|
||||
def __init__(self, jp):
|
||||
jp.register_output(C.OUTPUT_TEXT, JSON, self.dump)
|
||||
jp.register_output(C.OUTPUT_LIST, JSON, self.dump_pretty)
|
||||
jp.register_output(C.OUTPUT_LIST, JSON_RAW, self.dump)
|
||||
jp.register_output(C.OUTPUT_DICT, JSON, self.dump_pretty)
|
||||
jp.register_output(C.OUTPUT_DICT, JSON_RAW, self.dump)
|
||||
jp.register_output(C.OUTPUT_COMPLEX, JSON, self.dump_pretty)
|
||||
jp.register_output(C.OUTPUT_COMPLEX, JSON_RAW, self.dump)
|
||||
|
||||
def dump(self, data):
|
||||
print json.dumps(data)
|
||||
print json.dumps(data, default=str)
|
||||
|
||||
def dump_pretty(self, data):
|
||||
print json.dumps(data, indent=4)
|
||||
print json.dumps(data, indent=4, default=str)
|
||||
|
|
|
|||
Loading…
Reference in a new issue