forked from genewildish/Mainline
refactor(display): extract shared rendering logic into renderer.py
- Add renderer.py with parse_ansi(), get_default_font_path(), render_to_pil() - Update KittyDisplay and SixelDisplay to use shared renderer - Enhance parse_ansi to handle full ANSI color codes (4-bit, 256-color) - Update tests to use shared renderer functions
This commit is contained in:
@@ -69,40 +69,45 @@ class TestSixelAnsiParsing:
|
||||
|
||||
def test_parse_empty_string(self):
|
||||
"""handles empty string."""
|
||||
from engine.display.backends.sixel import _parse_ansi
|
||||
from engine.display.renderer import parse_ansi
|
||||
|
||||
result = _parse_ansi("")
|
||||
result = parse_ansi("")
|
||||
assert len(result) > 0
|
||||
|
||||
def test_parse_plain_text(self):
|
||||
"""parses plain text without ANSI codes."""
|
||||
from engine.display.backends.sixel import _parse_ansi
|
||||
from engine.display.renderer import parse_ansi
|
||||
|
||||
result = _parse_ansi("hello world")
|
||||
result = parse_ansi("hello world")
|
||||
assert len(result) == 1
|
||||
text, fg, bg, bold = result[0]
|
||||
assert text == "hello world"
|
||||
|
||||
def test_parse_with_color_codes(self):
|
||||
"""parses ANSI color codes."""
|
||||
from engine.display.backends.sixel import _parse_ansi
|
||||
from engine.display.renderer import parse_ansi
|
||||
|
||||
result = _parse_ansi("\033[31mred\033[0m")
|
||||
assert len(result) == 2
|
||||
result = parse_ansi("\033[31mred\033[0m")
|
||||
assert len(result) == 1
|
||||
assert result[0][0] == "red"
|
||||
assert result[0][1] == (205, 49, 49)
|
||||
|
||||
def test_parse_with_bold(self):
|
||||
"""parses bold codes."""
|
||||
from engine.display.backends.sixel import _parse_ansi
|
||||
from engine.display.renderer import parse_ansi
|
||||
|
||||
result = _parse_ansi("\033[1mbold\033[0m")
|
||||
assert len(result) == 2
|
||||
result = parse_ansi("\033[1mbold\033[0m")
|
||||
assert len(result) == 1
|
||||
assert result[0][0] == "bold"
|
||||
assert result[0][3] is True
|
||||
|
||||
def test_parse_256_color(self):
|
||||
"""parses 256 color codes."""
|
||||
from engine.display.backends.sixel import _parse_ansi
|
||||
from engine.display.renderer import parse_ansi
|
||||
|
||||
result = _parse_ansi("\033[38;5;196mred\033[0m")
|
||||
assert len(result) == 2
|
||||
result = parse_ansi("\033[38;5;196mred\033[0m")
|
||||
assert len(result) == 1
|
||||
assert result[0][0] == "red"
|
||||
|
||||
|
||||
class TestSixelEncoding:
|
||||
|
||||
Reference in New Issue
Block a user