aboutsummaryrefslogtreecommitdiff
path: root/docs/prototypes/gen_tokens.py
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-07-25 15:00:56 -0500
committerCraig Jennings <c@cjennings.net>2026-07-25 15:00:56 -0500
commit2c416f5361ed10cd73eb72eb5062261b2e73c18f (patch)
tree5c84c09deb2c8392544020d432ffcd0fccde79f2 /docs/prototypes/gen_tokens.py
parentd52da959bc416e09bc0f3e54994563bd80e19c64 (diff)
downloadarchsetup-2c416f5361ed10cd73eb72eb5062261b2e73c18f.tar.gz
archsetup-2c416f5361ed10cd73eb72eb5062261b2e73c18f.zip
refactor(prototypes): merge casting widgets into Dupre kit
Diffstat (limited to 'docs/prototypes/gen_tokens.py')
-rw-r--r--docs/prototypes/gen_tokens.py21
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():