From 3afc8b5f0d22f0550362b7268fbf9a1d2b8c44ca Mon Sep 17 00:00:00 2001 From: Will McGugan Date: Mon, 11 Apr 2022 11:01:35 +0100 Subject: [PATCH] docs --- src/textual/color.py | 3 ++- src/textual/css/_styles_builder.py | 42 ++++++------------------------ tests/test_color.py | 6 +++++ 3 files changed, 16 insertions(+), 35 deletions(-) diff --git a/src/textual/color.py b/src/textual/color.py index c58315248..9b707b8eb 100644 --- a/src/textual/color.py +++ b/src/textual/color.py @@ -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. diff --git a/src/textual/css/_styles_builder.py b/src/textual/css/_styles_builder.py index 1f0705fa7..8ae5927d3 100644 --- a/src/textual/css/_styles_builder.py +++ b/src/textual/css/_styles_builder.py @@ -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 diff --git a/tests/test_color.py b/tests/test_color.py index 35430391a..26f65f724 100644 --- a/tests/test_color.py +++ b/tests/test_color.py @@ -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)