aboutsummaryrefslogtreecommitdiff
path: root/scripts/theme-studio/face_specs.py
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-06-13 15:17:59 -0500
committerCraig Jennings <c@cjennings.net>2026-06-13 15:17:59 -0500
commitedeeb29c6bd7457eb4b43a9767373f94ee036814 (patch)
treeecb0732394d8f9938b2953786cf6de6af3570c99 /scripts/theme-studio/face_specs.py
parentb76521ffff0ed53b05817878bf51e04db9f837c4 (diff)
downloaddotemacs-edeeb29c6bd7457eb4b43a9767373f94ee036814.tar.gz
dotemacs-edeeb29c6bd7457eb4b43a9767373f94ee036814.zip
Refactor theme studio face assembly
Diffstat (limited to 'scripts/theme-studio/face_specs.py')
-rw-r--r--scripts/theme-studio/face_specs.py37
1 files changed, 37 insertions, 0 deletions
diff --git a/scripts/theme-studio/face_specs.py b/scripts/theme-studio/face_specs.py
new file mode 100644
index 00000000..32de68e0
--- /dev/null
+++ b/scripts/theme-studio/face_specs.py
@@ -0,0 +1,37 @@
+"""Shared face-spec defaults for theme-studio generation."""
+
+from __future__ import annotations
+
+from typing import Any
+
+
+STYLE_DEFAULTS: dict[str, Any] = {
+ "fg": None,
+ "bg": None,
+ "bold": False,
+ "italic": False,
+ "underline": False,
+ "strike": False,
+}
+
+PACKAGE_DEFAULTS: dict[str, Any] = {
+ **STYLE_DEFAULTS,
+ "inherit": None,
+ "height": 1,
+ "box": None,
+}
+
+
+def face_spec(spec: dict[str, Any] | None = None, *, package: bool = False) -> dict[str, Any]:
+ out = dict(PACKAGE_DEFAULTS if package else STYLE_DEFAULTS)
+ if spec:
+ out.update(spec)
+ return out
+
+
+def ui_face_spec(spec: dict[str, Any] | None = None) -> dict[str, Any]:
+ return face_spec(spec, package=False)
+
+
+def package_face_spec(spec: dict[str, Any] | None = None) -> dict[str, Any]:
+ return face_spec(spec, package=True)