Source code for httk.serve.web.renderers.base
"""Define renderer inputs and outputs shared by content renderers."""
from collections.abc import Mapping
from dataclasses import dataclass
from pathlib import Path
from typing import Protocol
[docs]
@dataclass(frozen=True)
class RenderResult:
"""Carry rendered HTML, metadata, and widget placements.
:param html: Rendered HTML before templates are applied.
:param metadata: Source metadata.
:param widgets: Widget placements found in the source.
"""
html: str
metadata: dict[str, object]
widgets: tuple[WidgetPlacement, ...] = ()
[docs]
class Renderer(Protocol):
"""Define the source-renderer protocol."""
[docs]
def render(self, source_path: Path) -> RenderResult:
"""Render a source file into HTML and metadata."""
...