Files
starruler-linux/source/doc/document.py
T
2018-07-17 14:15:37 +02:00

57 lines
1.5 KiB
Python

#!/usr/bin/python
import os
import sys
import json
from mako.template import Template
from mako.lookup import TemplateLookup
import pprint
def main(infile, outdir):
# Load JSON
data = json.load(open(infile))
tmpl = TemplateLookup(directories=["source/doc/"])
tmpl_engine = ""
tmpl_edata = None
def render(template, filename, data):
result = tmpl.get_template(template).render(
engine = tmpl_engine,
data = tmpl_edata,
**data)
with open(os.path.join(outdir, filename), "w") as fl:
fl.write(result)
# Render CSS
render("template.styles.css", "styles.css", data)
render("template.top.html", "index.html", data)
# Output data files
for engine, edata in data.items():
tmpl_engine = engine
tmpl_edata = edata
edata["classmap"] = {c["name"] for c in edata["classes"]}
edata["enummap"] = {e["name"] for e in edata["enums"]}
render("template.index.html", "%s.index.html" % engine, edata)
render("template.globals.html", "%s.globals.html" % engine, edata)
render("template.functions.html", "%s.functions.html" % engine, edata)
for cls in edata["classes"]:
render("template.class.html", "%s.class.%s.html" % (engine, cls["name"]), cls)
for en in edata["enums"]:
render("template.enum.html", "%s.enum.%s.html" % (engine, en["name"]), en)
if __name__ == '__main__':
infile = sys.argv[1] if len(sys.argv) >= 2 else "api_documentation.json"
outdir = sys.argv[2] if len(sys.argv) >= 3 else "api_documentation/"
try:
os.makedirs(outdir)
except:
pass
main(infile, outdir)
# vim: ff=unix :