mirror of
https://github.com/catppuccin/python.git
synced 2026-03-16 00:02:01 +08:00
feat(css): add important stylesheet variants
This commit is contained in:
parent
a8eb6b994b
commit
a0fd5b0e9d
2
.github/workflows/gh-pages.yaml
vendored
2
.github/workflows/gh-pages.yaml
vendored
@ -16,7 +16,7 @@ jobs:
|
||||
- uses: "actions/setup-node@v4"
|
||||
with:
|
||||
node-version: "latest"
|
||||
- run: "pip install catppuccin[pygments]"
|
||||
- run: "pip install catppuccin[pygments,gh-pages]"
|
||||
- run: "scripts/build-gh-pages"
|
||||
- run: "npx lightningcss-cli --minify ./gh-pages/pygments/*.css --output-dir ./gh-pages/pygments/"
|
||||
- uses: "peaceiris/actions-gh-pages@v3"
|
||||
|
||||
3
.gitignore
vendored
3
.gitignore
vendored
@ -15,3 +15,6 @@ __pycache__/
|
||||
.coverage
|
||||
coverage.xml
|
||||
htmlcov
|
||||
|
||||
# gh-pages build script output
|
||||
/gh-pages
|
||||
34
poetry.lock
generated
34
poetry.lock
generated
@ -1,4 +1,4 @@
|
||||
# This file is automatically @generated by Poetry 1.7.1 and should not be changed by hand.
|
||||
# This file is automatically @generated by Poetry 1.8.2 and should not be changed by hand.
|
||||
|
||||
[[package]]
|
||||
name = "colorama"
|
||||
@ -322,6 +322,24 @@ files = [
|
||||
{file = "ruff-0.2.1.tar.gz", hash = "sha256:3b42b5d8677cd0c72b99fcaf068ffc62abb5a19e71b4a3b9cfa50658a0af02f1"},
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tinycss2"
|
||||
version = "1.2.1"
|
||||
description = "A tiny CSS parser"
|
||||
optional = true
|
||||
python-versions = ">=3.7"
|
||||
files = [
|
||||
{file = "tinycss2-1.2.1-py3-none-any.whl", hash = "sha256:2b80a96d41e7c3914b8cda8bc7f705a4d9c49275616e886103dd839dfc847847"},
|
||||
{file = "tinycss2-1.2.1.tar.gz", hash = "sha256:8cff3a8f066c2ec677c06dbc7b45619804a6938478d9d73c284b29d14ecb0627"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
webencodings = ">=0.4"
|
||||
|
||||
[package.extras]
|
||||
doc = ["sphinx", "sphinx_rtd_theme"]
|
||||
test = ["flake8", "isort", "pytest"]
|
||||
|
||||
[[package]]
|
||||
name = "tomli"
|
||||
version = "2.0.1"
|
||||
@ -392,11 +410,23 @@ files = [
|
||||
{file = "typing_extensions-4.9.0.tar.gz", hash = "sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783"},
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "webencodings"
|
||||
version = "0.5.1"
|
||||
description = "Character encoding aliases for legacy web content"
|
||||
optional = true
|
||||
python-versions = "*"
|
||||
files = [
|
||||
{file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"},
|
||||
{file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"},
|
||||
]
|
||||
|
||||
[extras]
|
||||
gh-pages = ["tinycss2"]
|
||||
pygments = ["pygments"]
|
||||
rich = ["rich"]
|
||||
|
||||
[metadata]
|
||||
lock-version = "2.0"
|
||||
python-versions = "^3.8.0"
|
||||
content-hash = "e0dd8e64b7b617aaf05ceee439af64da8d359b58a3efd3fb5d79ec4eef35277a"
|
||||
content-hash = "cbfcbf5d9b3234e64793cd06a4f9a8198d960cb70c2f47a08125a54de925f48d"
|
||||
|
||||
@ -19,10 +19,12 @@ catppuccin-mocha = "catppuccin.extras.pygments:MochaStyle"
|
||||
python = "^3.8.0"
|
||||
pygments = { version = "^2.17.2", optional = true }
|
||||
rich = { version = "^13.7.0", optional = true }
|
||||
tinycss2 = { version = "^1.2.1", optional = true }
|
||||
|
||||
[tool.poetry.extras]
|
||||
pygments = ["pygments"]
|
||||
rich = ["rich"]
|
||||
gh-pages = ["tinycss2"]
|
||||
|
||||
[tool.poetry.group.dev.dependencies]
|
||||
mypy = "^1.8.0"
|
||||
@ -58,7 +60,4 @@ ignore = [
|
||||
strict = true
|
||||
|
||||
[tool.coverage.report]
|
||||
exclude_lines = [
|
||||
"pragma: no cover",
|
||||
"if TYPE_CHECKING:",
|
||||
]
|
||||
exclude_lines = ["pragma: no cover", "if TYPE_CHECKING:"]
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env python
|
||||
import re
|
||||
from pathlib import Path
|
||||
|
||||
import tinycss2
|
||||
from pygments.formatters.html import HtmlFormatter
|
||||
|
||||
from catppuccin import PALETTE
|
||||
@ -23,16 +23,32 @@ PYGMENTS_STYLES = {
|
||||
}
|
||||
|
||||
|
||||
PADDING_PAT = re.compile(r" padding-(?:left|right): \d+px;")
|
||||
|
||||
|
||||
def write(content: str, path: Path) -> None:
|
||||
path.parent.mkdir(parents=True, exist_ok=True)
|
||||
path.write_text(content)
|
||||
|
||||
|
||||
def postprocess_css(content: str) -> str:
|
||||
return PADDING_PAT.sub("", content)
|
||||
def postprocess_css(content: str, important: bool) -> str:
|
||||
rules = tinycss2.parse_stylesheet(content, skip_comments=True, skip_whitespace=True)
|
||||
for rule in rules:
|
||||
declarations = tinycss2.parse_declaration_list(
|
||||
rule.content, skip_comments=True, skip_whitespace=True
|
||||
)
|
||||
|
||||
# remove padding
|
||||
declarations = [
|
||||
declaration
|
||||
for declaration in declarations
|
||||
if "padding" not in declaration.lower_name
|
||||
]
|
||||
|
||||
# add !important if needed
|
||||
for declaration in declarations:
|
||||
declaration.important = important
|
||||
|
||||
rule.content = declarations
|
||||
|
||||
return tinycss2.serialize(rules)
|
||||
|
||||
|
||||
def flavor_css(flavor: str) -> str:
|
||||
@ -49,17 +65,24 @@ def variable_css() -> str:
|
||||
return css
|
||||
|
||||
|
||||
def build_css() -> None:
|
||||
def build_css(*, important: bool) -> None:
|
||||
# build individual CSS files for each flavor
|
||||
for flavor in PALETTE:
|
||||
filename = f"catppuccin-{flavor.identifier}.css"
|
||||
if important:
|
||||
filename = f"catppuccin-{flavor.identifier}.important.css"
|
||||
else:
|
||||
filename = f"catppuccin-{flavor.identifier}.css"
|
||||
path = PYGMENTS_DIR / filename
|
||||
write(postprocess_css(flavor_css(flavor.identifier)), path)
|
||||
write(postprocess_css(flavor_css(flavor.identifier), important), path)
|
||||
|
||||
# build a variable CSS file
|
||||
path = PYGMENTS_DIR / "catppuccin-variables.css"
|
||||
write(postprocess_css(variable_css()), path)
|
||||
if important:
|
||||
path = PYGMENTS_DIR / "catppuccin-variables.important.css"
|
||||
else:
|
||||
path = PYGMENTS_DIR / "catppuccin-variables.css"
|
||||
write(postprocess_css(variable_css(), important), path)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
build_css()
|
||||
build_css(important=False)
|
||||
build_css(important=True)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user