This commit is contained in:
Will McGugan
2022-04-11 11:01:35 +01:00
parent 9d13992864
commit 3afc8b5f0d
3 changed files with 16 additions and 35 deletions

View File

@@ -241,7 +241,8 @@ class Color(NamedTuple):
"""Parse a string containing a CSS-style color.
Args:
color_text (str): Text with a valid color format.
color_text (str | Color): Text with a valid color format. Color objects will
be returned unmodified.
Raises:
ColorParseError: If the color is not encoded correctly.

View File

@@ -460,6 +460,7 @@ class StylesBuilder:
)
def process_color(self, name: str, tokens: list[Token], important: bool) -> None:
"""Processes a simple color declaration."""
name = name.replace("-", "_")
for token in tokens:
if token.name in ("color", "token"):
@@ -474,40 +475,13 @@ class StylesBuilder:
name, token, f"unexpected token {token.value!r} in declaration"
)
def process_background(
self, name: str, tokens: list[Token], important: bool
) -> None:
self.process_color(name, tokens, important)
def process_scrollbar_color(
self, name: str, tokens: list[Token], important: bool
) -> None:
self.process_color(name, tokens, important)
def process_scrollbar_color_hover(
self, name: str, tokens: list[Token], important: bool
) -> None:
self.process_color(name, tokens, important)
def process_scrollbar_color_active(
self, name: str, tokens: list[Token], important: bool
) -> None:
self.process_color(name, tokens, important)
def process_scrollbar_background(
self, name: str, tokens: list[Token], important: bool
) -> None:
self.process_color(name, tokens, important)
def process_scrollbar_background_hover(
self, name: str, tokens: list[Token], important: bool
) -> None:
self.process_color(name, tokens, important)
def process_scrollbar_background_active(
self, name: str, tokens: list[Token], important: bool
) -> None:
self.process_color(name, tokens, important)
process_background = process_color
process_scrollbar_color = process_color
process_scrollbar_color_hover = process_color
process_scrollbar_color_active = process_color
process_scrollbar_background = process_color
process_scrollbar_background_hover = process_color
process_scrollbar_background_active = process_color
def process_text_style(
self, name: str, tokens: list[Token], important: bool

View File

@@ -108,6 +108,12 @@ def test_color_parse(text, expected):
assert Color.parse(text) == expected
def test_color_parse_color():
# as a convenience, if Color.parse is passed a color object, it will return it
color = Color(20, 30, 40, 0.5)
assert Color.parse(color) is color
def test_color_add():
assert Color(50, 100, 200) + Color(10, 20, 30, 0.9) == Color(14, 28, 47)