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