|
|
a555416 |
#!/usr/bin/env python2
|
|
|
a555416 |
|
|
|
a555416 |
import datetime
|
|
|
a555416 |
import json
|
|
|
a555416 |
import sys
|
|
|
a555416 |
import toml
|
|
|
a555416 |
|
|
|
a555416 |
try:
|
|
|
a555416 |
_range = xrange
|
|
|
a555416 |
iteritems = dict.iteritems
|
|
|
a555416 |
except NameError:
|
|
|
a555416 |
unicode = str
|
|
|
a555416 |
_range = range
|
|
|
a555416 |
basestring = str
|
|
|
a555416 |
unichr = chr
|
|
|
a555416 |
iteritems = dict.items
|
|
|
a555416 |
long = int
|
|
|
a555416 |
|
|
|
a555416 |
def tag(value):
|
|
|
a555416 |
if isinstance(value, dict):
|
|
|
a555416 |
d = { }
|
|
|
a555416 |
for k, v in iteritems(value):
|
|
|
a555416 |
d[k] = tag(v)
|
|
|
a555416 |
return d
|
|
|
a555416 |
elif isinstance(value, list):
|
|
|
a555416 |
a = []
|
|
|
a555416 |
for v in value:
|
|
|
a555416 |
a.append(tag(v))
|
|
|
a555416 |
try:
|
|
|
a555416 |
a[0]["value"]
|
|
|
a555416 |
except KeyError:
|
|
|
a555416 |
return a
|
|
|
a555416 |
except IndexError:
|
|
|
a555416 |
pass
|
|
|
a555416 |
return {'type': 'array', 'value': a}
|
|
|
a555416 |
elif isinstance(value, basestring):
|
|
|
a555416 |
return {'type': 'string', 'value': value}
|
|
|
a555416 |
elif isinstance(value, bool):
|
|
|
a555416 |
return {'type': 'bool', 'value': str(value).lower()}
|
|
|
a555416 |
elif isinstance(value, int):
|
|
|
a555416 |
return {'type': 'integer', 'value': str(value)}
|
|
|
a555416 |
elif isinstance(value, long):
|
|
|
a555416 |
return {'type': 'integer', 'value': str(value)}
|
|
|
a555416 |
elif isinstance(value, float):
|
|
|
a555416 |
return {'type': 'float', 'value': repr(value)}
|
|
|
a555416 |
elif isinstance(value, datetime.datetime):
|
|
|
a555416 |
sdate = value.strftime('%Y-%m-%dT%H:%M:%SZ')
|
|
|
a555416 |
return {'type': 'datetime', 'value': sdate}
|
|
|
a555416 |
assert False, 'Unknown type: %s' % type(value)
|
|
|
a555416 |
|
|
|
a555416 |
|
|
|
a555416 |
if __name__ == '__main__':
|
|
|
a555416 |
tdata = toml.loads(sys.stdin.read())
|
|
|
a555416 |
tagged = tag(tdata)
|
|
|
a555416 |
print(json.dumps(tagged))
|
|
|
a555416 |
|