Renderers

class wenmode.renderers.RenderContext

Base render context passed through renderer handlers.

class wenmode.renderers.BaseRenderer

Dispatch-based base class for renderers.

Subclasses register handlers with register(). A handler receives the renderer instance, the node, and the render context, and returns rendered text.

create_context(node=None)

Create a render context for one render call.

Parameters:

node (Node | None) – Root node being rendered, when available.

Returns:

New render context.

Return type:

RenderContext

render(node, context=None)

Render a node.

Parameters:
  • node (Node) – Node to render.

  • context (RenderContext | None) – Optional render context. When omitted, a new context is created.

Returns:

Rendered output.

Return type:

str

render_iter(nodes)

Render an iterable of nodes with one shared context.

Parameters:

nodes (Iterable[Node]) – Nodes to render.

Returns:

Iterator of rendered chunks.

Return type:

Iterator[str]

render_node(node, context)

Render one node with an existing context.

render_children(children, context)

Render child nodes and concatenate their output.

classmethod register(node_type)

Register a render handler for a node type.

Parameters:

node_type (str) – Value of node.type handled by the decorated function.

Returns:

Decorator that stores the handler on the renderer class.

Return type:

Callable[[Callable[[…], str]], Callable[[…], str]]

render_unknown(node, context)

Render a node without a registered handler.

The default behavior renders child nodes, then literal value fields, and otherwise returns an empty string.

class wenmode.HTMLRenderer(escape=True, sanitize_urls=True, directives=())

Render Wenmode nodes as HTML.

Parameters:
  • escape (bool) – Escape raw HTML nodes when True.

  • sanitize_urls (bool) – Drop unsafe URL schemes from links and images when True.

  • directives (Iterable[DirectiveHtmlRenderer]) – Directive renderers to register at construction time.

create_context(node=None)

Create an HTML render context.

register_directive_renderer(directive)

Register one directive renderer.

Parameters:

directive (DirectiveHtmlRenderer) – Directive renderer implementation.

escape(value)

Escape raw HTML when renderer escaping is enabled.

escape_html(value)

Escape a string for HTML text or attribute output.

render_attrs(attrs)

Render a mapping as HTML attributes.

None and False values are omitted. True values render as boolean attributes.

sanitize_url(value)

Return a URL if its scheme is allowed, otherwise None.

class wenmode.MarkdownRenderer

Render Wenmode nodes as normalized Markdown.

The renderer serializes the AST and is not source preserving. Syntax details that are not represented in the node tree may be normalized.

escape_text(value)

Escape Markdown punctuation in plain text.

escape_destination(value)

Escape a link or image destination.

escape_title(value)

Escape a link or image title.

render_directive_attributes(attributes)

Render directive attributes in Markdown directive syntax.

class wenmode.RSTRenderer

Render Wenmode nodes as reStructuredText.

create_context(node=None)

Create a reStructuredText render context.

escape_text(value)

Escape reStructuredText punctuation in plain text.

escape_inline_literal(value)

Escape text inside an inline literal.

Escape a link or image target.

render_directive_argument(node, context)

Render a directive argument from a directive or label node.

class wenmode.renderers.DirectiveHtmlRenderer(*args, **kwargs)

Protocol for HTML directive renderers.

Implementations are registered on HTMLRenderer and are selected by node_type plus directive name.

render(renderer, node, context)

Render a matched directive node to HTML.