#! /usr/bin/env python3 import yaml import os import sys import markdown import calcdb db = calcdb.CalcDB(".") md = markdown.Markdown() # Fields for the summary summary = [ "teaching.exam_mode", "devices.transfer_tutorial", ] # Parse arguments def usage(): print(f"usage: {sys.argv[0]} [--standalone]", file=sys.stderr) sys.exit(1) args = sys.argv[1:] if len(args) < 1: usage() if args[0] not in db.lang: print(f"error: no language data for '{args[0]}'", file=sys.stderr) sys.exit(1) lang = db.lang[args[0]] if args[1:] != [] and args[1:] != ["--standalone"]: usage() standalone = ("--standalone" in args) # HTML bits header = """ """ if standalone: print(header) print("") # Photo print(f"") for (name, calc) in db.all_calcs(): if standalone: url = f"../images/small/{name}.jpg" else: url = "https://gitea.planet-casio.com/Lephenixnoir/CalcDB/raw/"\ f"branch/master/images/small/{name}.jpg" cssname = "calc calc-" + name.replace("+", "p") print(f"") print("") # Full name print(f"") for (name, calc) in db.all_calcs(): value = calc["general"]["full_name"] active = " st-active" if calc["general"]["active"] else "" cssname = "calc calc-" + name.replace("+", "p") print(f"") print("") # First category, the "summary" for category in ["summary"] + db.all_categories(): r = lang.category(category) print(f"") print(f" ") print(f" ") print(f"") if category == "summary": fields = (name.split(".", 1) for name in summary) else: fields = ((category, field) for field in db.all_fields(category)) for (cat, field) in fields: if category == "general" and field == "full_name": continue r = lang.field(cat, field) print(f"") for (name, calc) in db.all_calcs(): value = calc.get(cat,{}).get(field) r, styles = calcdb.render(db, lang, cat, field, value) r = lang.filter(r) r = md.convert(r) classes = " ".join(f"st-{c}" for c in styles) cssname = "calc calc-" + name.replace("+", "p") print(f"") print("") print("
{value}
{r}
{r}{r}
") if standalone: print("")