Fix hex color handling in SVG exporter
pyte provides 256-color/truecolor values without # prefix (e.g., 'ff8700'). Added check to prepend # for 6-digit hex strings.
This commit is contained in:
@@ -68,10 +68,15 @@ def _color_to_hex(color: str, is_foreground: bool = True) -> str:
|
|||||||
if color == "default":
|
if color == "default":
|
||||||
return DEFAULT_FG if is_foreground else DEFAULT_BG
|
return DEFAULT_FG if is_foreground else DEFAULT_BG
|
||||||
|
|
||||||
# Already a hex color
|
# Already a hex color with #
|
||||||
if color.startswith("#"):
|
if color.startswith("#"):
|
||||||
return color
|
return color
|
||||||
|
|
||||||
|
# Hex color without # prefix (pyte's 256-color/truecolor format)
|
||||||
|
# Check if it looks like a hex color (6 hex digits)
|
||||||
|
if len(color) == 6 and all(c in "0123456789abcdefABCDEF" for c in color):
|
||||||
|
return f"#{color}"
|
||||||
|
|
||||||
# Named color lookup (case-insensitive)
|
# Named color lookup (case-insensitive)
|
||||||
lower = color.lower()
|
lower = color.lower()
|
||||||
if lower in ANSI_COLORS:
|
if lower in ANSI_COLORS:
|
||||||
|
|||||||
@@ -31,6 +31,13 @@ class TestColorToHex:
|
|||||||
assert _color_to_hex("#123456") == "#123456"
|
assert _color_to_hex("#123456") == "#123456"
|
||||||
assert _color_to_hex("#AABBCC") == "#AABBCC"
|
assert _color_to_hex("#AABBCC") == "#AABBCC"
|
||||||
|
|
||||||
|
def test_hex_color_without_hash(self) -> None:
|
||||||
|
"""Hex colors without # prefix (pyte's 256-color/truecolor) get # added."""
|
||||||
|
assert _color_to_hex("ff0000") == "#ff0000"
|
||||||
|
assert _color_to_hex("123456") == "#123456"
|
||||||
|
assert _color_to_hex("AABBCC") == "#AABBCC"
|
||||||
|
assert _color_to_hex("ff8700") == "#ff8700" # Common 256-color orange
|
||||||
|
|
||||||
def test_named_colors(self) -> None:
|
def test_named_colors(self) -> None:
|
||||||
"""Named ANSI colors map correctly."""
|
"""Named ANSI colors map correctly."""
|
||||||
assert _color_to_hex("red") == ANSI_COLORS["red"]
|
assert _color_to_hex("red") == ANSI_COLORS["red"]
|
||||||
|
|||||||
Reference in New Issue
Block a user