diff options
Diffstat (limited to 'docs/prototypes/gen_tokens.py')
| -rw-r--r-- | docs/prototypes/gen_tokens.py | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/docs/prototypes/gen_tokens.py b/docs/prototypes/gen_tokens.py index 9f011e9..7c80985 100644 --- a/docs/prototypes/gen_tokens.py +++ b/docs/prototypes/gen_tokens.py @@ -70,6 +70,12 @@ def resolve_color(tokens, key): raise KeyError(key) +def iter_section_items(tokens, sections): + """Yield (name, value) pairs from SECTIONS in their declared order.""" + for section in sections: + yield from tokens.get(section, {}).items() + + def _el_str(v): """Quote a value as an elisp string literal, escaping backslashes/quotes.""" return '"' + v.replace("\\", "\\\\").replace('"', '\\"') + '"' @@ -78,9 +84,8 @@ def _el_str(v): def emit_web_css(tokens): """The inner :root block: hyphenated --vars, glows as rgb triples.""" lines = [] - for section in COLOR_SECTIONS: - for k, v in tokens.get(section, {}).items(): - lines.append(f"--{k}:{v};") + for k, v in iter_section_items(tokens, COLOR_SECTIONS): + lines.append(f"--{k}:{v};") for name, source in tokens.get("glow", {}).items(): lines.append(f"--{name}:{hex_to_triple(resolve_color(tokens, source))};") for k, v in tokens.get("font", {}).items(): @@ -100,9 +105,8 @@ def emit_waybar_gtk(tokens): " GTK CSS has no custom properties; reference these as @name, and use", " alpha(@name, 0.5) where the web build uses rgba(var(--name),.5). */", ] - for section in COLOR_SECTIONS: - for k, v in tokens.get(section, {}).items(): - lines.append(f"@define-color {gtk(k)} {v};") + for k, v in iter_section_items(tokens, COLOR_SECTIONS): + lines.append(f"@define-color {gtk(k)} {v};") for name, source in tokens.get("glow", {}).items(): lines.append(f"@define-color {gtk(name)} {resolve_color(tokens, source)};") return "\n".join(lines) @@ -111,9 +115,8 @@ def emit_waybar_gtk(tokens): def emit_elisp(tokens): """An alist of (name . hex) plus timing, for the future svg.el renderer.""" pairs = [] - for section in COLOR_SECTIONS: - for k, v in tokens.get(section, {}).items(): - pairs.append(f"({k} . {_el_str(v)})") + for k, v in iter_section_items(tokens, COLOR_SECTIONS): + pairs.append(f"({k} . {_el_str(v)})") for name, source in tokens.get("glow", {}).items(): pairs.append(f"({name} . {_el_str(resolve_color(tokens, source))})") for k, v in tokens.get("font", {}).items(): |
