"""Renderer registry: pick the first renderer that accepts a message."""
from __future__ import annotations
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from rich.console import RenderableType
from .base import ContentRenderer
class RendererRegistry:
"""Ordered list of renderers; first accepting renderer wins."""
def __init__(self) -> None:
self._renderers: list[ContentRenderer] = []
def register(self, renderer: "ContentRenderer") -> None:
self._renderers.append(renderer)
def render(self, msg: dict) -> "RenderableType":
for renderer in self._renderers:
if renderer.accepts(msg):
return renderer.render(msg)
return str(msg)