SHOW:
|
|
- or go back to the newest paste.
1 | from typing import Tuple | |
2 | ||
3 | ||
4 | def parse_optional_alpha(colour) -> Tuple[int]: | |
5 | - | if not isinstance(colour, (list, tuple)): |
5 | + | if not isinstance(colour, (list, tuple)) or len(colour) not in (3, 4): |
6 | raise ValueError("Unknown colour info.") | |
7 | ||
8 | - | if len(colour) not in (3, 4): |
8 | + | |
9 | r, g, b, a = colour | |
10 | return (r, g, b, a) | |
11 | except ValueError: | |
12 | return (*colour, 0) | |
13 | ||
14 | ||
15 | def normalise_colour_info(colour) -> Tuple[str, Tuple[int, int, int, int]]: | |
16 | """Normalise colour info to (name, (r, g, b, alpha)).""" | |
17 | ||
18 | - | def normalise_colour_info(colour): |
18 | + | |
19 | try: | |
20 | return ("", parse_optional_alpha(colour)) | |
21 | except ValueError as e: | |
22 | raise e | |
23 | ||
24 | try: | |
25 | name, values = colour | |
26 | except ValueError: | |
27 | raise ValueError("Unknown colour info.") | |
28 | ||
29 | return (name, parse_optional_alpha(values)) | |
30 | ||
31 | ||
32 | assert normalise_colour_info(("a", (1, 2, 3))) == ("a", (1, 2, 3, 0)) | |
33 | assert normalise_colour_info(("a", (1, 2, 3, 4))) == ("a", (1, 2, 3, 4)) | |
34 | assert normalise_colour_info((1, 2, 3, 4)) == ("", (1, 2, 3, 4)) | |
35 | assert normalise_colour_info((1, 2, 3)) == ("", (1, 2, 3, 0)) | |
36 | ||
37 |