Example #1
0
def recursive(p, d=0, label=None):

    name = "main"
    if d > 0:
        name = get_subgraph_name()
    comment = "depth %s" % (d)
    dot = Digraph(name=name, comment=comment)
    if not label == None:
        dot.attr(label=label)
    if type(p).__name__ == 'dict':
        for k in p:
            dot.label = k
            v = p[k]
            if 'children' in v:
                s = recursive(v['children'], (d + 1), k)
                dot.subgraph(s)
    elif type(p).__name__ == 'list':
        for x in p:
            if type(x).__name__ == 'str':
                n_key = get_key(x)
                dot.node(n_key, label=x)
                continue
            for k in x:
                #n_key = get_key(k)
                #dot.node(n_key, label=k)
                v = x[k]
                if 'children' in v:
                    s = recursive(v['children'], (d + 1), k)
                    dot.subgraph(s)

    return dot