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
@dataclass(frozen=True)
from typing import Protocol
@dataclass(frozen=True)
[docs]
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.
"""
[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."""
...