676be5dd19
The content of this branch was automatically imported from Fedora ELN with the following as its source: https://src.fedoraproject.org/rpms/python-toml#81771194d42eeddd742ea014b270604c0453368b
57 lines
1.4 KiB
Python
57 lines
1.4 KiB
Python
#!/usr/bin/env python2
|
|
|
|
import datetime
|
|
import json
|
|
import sys
|
|
import toml
|
|
|
|
try:
|
|
_range = xrange
|
|
iteritems = dict.iteritems
|
|
except NameError:
|
|
unicode = str
|
|
_range = range
|
|
basestring = str
|
|
unichr = chr
|
|
iteritems = dict.items
|
|
long = int
|
|
|
|
def tag(value):
|
|
if isinstance(value, dict):
|
|
d = { }
|
|
for k, v in iteritems(value):
|
|
d[k] = tag(v)
|
|
return d
|
|
elif isinstance(value, list):
|
|
a = []
|
|
for v in value:
|
|
a.append(tag(v))
|
|
try:
|
|
a[0]["value"]
|
|
except KeyError:
|
|
return a
|
|
except IndexError:
|
|
pass
|
|
return {'type': 'array', 'value': a}
|
|
elif isinstance(value, basestring):
|
|
return {'type': 'string', 'value': value}
|
|
elif isinstance(value, bool):
|
|
return {'type': 'bool', 'value': str(value).lower()}
|
|
elif isinstance(value, int):
|
|
return {'type': 'integer', 'value': str(value)}
|
|
elif isinstance(value, long):
|
|
return {'type': 'integer', 'value': str(value)}
|
|
elif isinstance(value, float):
|
|
return {'type': 'float', 'value': repr(value)}
|
|
elif isinstance(value, datetime.datetime):
|
|
sdate = value.strftime('%Y-%m-%dT%H:%M:%SZ')
|
|
return {'type': 'datetime', 'value': sdate}
|
|
assert False, 'Unknown type: %s' % type(value)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
tdata = toml.loads(sys.stdin.read())
|
|
tagged = tag(tdata)
|
|
print(json.dumps(tagged))
|
|
|