packages feed

cacophony-0.11.0: tools/pretty-print/format-vectors.py

#!/usr/bin/env python

import jinja2
import json
import os
import sys

def format_input(val):
    if isinstance(val, dict):
        return { k: format_input(v) for k, v in val.items() }
    if isinstance(val, list):
        return map(format_input, val)
    if val is None:
        return "null"
    elif val is False:
        return "false"
    elif val is True:
        return "true"
    else:
        return "\"{0}\"".format(val)

with open(sys.argv[1]) as f:
    vectors = json.loads(f.read())["vectors"]
    vectors = map(format_input, vectors)

    templateLoader = jinja2.FileSystemLoader(searchpath=os.path.dirname(__file__))
    templateEnv = jinja2.Environment(loader=templateLoader)
    template = templateEnv.get_template("vector-template.jinja")
    templateVars = { "vectors": vectors }

with open(sys.argv[1], 'w') as f:
    f.write(template.render(templateVars))