aboutsummaryrefslogtreecommitdiff
path: root/scripts/theme-studio/face_specs.py
diff options
context:
space:
mode:
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)