#!/usr/bin/env python

import sys

def gml_sub(blob):

    lines = []
    for line in blob.split('\n'):
        line = line.strip()
        lines.append(line)
    blob = "\n".join(lines)

    blob = blob.replace('\n\n', '\n')
    blob = blob.replace(']\n', '},\n')
    blob = blob.replace('[\n', '{')
    blob = blob.replace('\n{', '\n    {')
    for s in ['id ', 'label ', 'source ', 'target ', 'value ']:
        blob = blob.replace(s, '"%s":' % s.strip())
    blob = blob.replace('\n"', ', "')
    blob = blob.replace('\n}', '}')
    return blob.strip('\n')

def main(graphfile):
    """
    Converts GraphML file to json
    Usage:
    >>> python convert.py mygraph.gml
    """

    with open(graphfile, 'r') as f:
        blob = f.read()
    blob = ''.join(blob.split('node')[1:])
    nodes = blob.split('edge')[0]
    edges = ''.join(blob.split('edge')[1:]).strip().rstrip(']')

    nodes = gml_sub(nodes)
    edges = gml_sub(edges)
    print '{\n  "nodes":['
    print nodes.rstrip(',')
    print '  ],\n  "links":['
    print '    ' + edges.rstrip(',')
    print '  ]\n}\n'

if __name__ == '__main__':
    main(sys.argv[1])