Main API¶
- class wenmode.Wenmode(rules=None, renderer=None, directives=())¶
Convenience facade that combines a parser and a renderer.
Wenmodeis the main high-level API for applications. It parses Markdown with a configured rule set and renders the resulting node tree with a renderer.- Parameters:
rules (Iterable[type[Rule] | Rule] | None) – Rule classes or configured rule instances. When omitted, the CommonMark-style preset is used.
renderer (BaseRenderer | None) – Renderer instance used by
render()andrender_node(). When omitted,HTMLRendereris used.directives (Iterable[DirectiveHtmlRenderer]) – HTML directive renderers to register on the default or supplied HTML renderer.
- parse(source)¶
Parse Markdown into a root node.
- Parameters:
source (str | Iterable[str]) – Markdown source as a string or an iterable of lines.
- Returns:
Parsed document root.
- Return type:
- render(source)¶
Parse Markdown and render it with the configured renderer.
- Parameters:
source (str | Iterable[str]) – Markdown source as a string or an iterable of lines.
- Returns:
Rendered output.
- Return type:
str
- render_node(node)¶
Render an existing AST node.
- Parameters:
node (Node) – Node to render.
- Returns:
Rendered output.
- Return type:
str
- stream(source)¶
Yield rendered chunks while parsing Markdown incrementally.
Streaming is only supported for rule sets that do not require deferred document-wide inline transforms.
- Parameters:
source (str | Iterable[str]) – Markdown source as a string or an iterable of lines.
- Returns:
Iterator of rendered chunks.
- Raises:
wenmode.StreamingUnsupportedError – Raised by the parser when a configured rule set requires deferred inline resolution.
- Return type:
Iterator[str]
- register_rule(rule)¶
Register or replace one parser rule.
- register_rules(rules)¶
Register or replace multiple parser rules.
- register_directive_renderer(directive)¶
Register an HTML directive renderer.
- Parameters:
directive (DirectiveHtmlRenderer) – Directive renderer implementing
DirectiveHtmlRenderer.- Raises:
TypeError – If this
Wenmodeinstance does not use anHTMLRenderer.
- class wenmode.Parser(rules)¶
Parse Markdown into Wenmode nodes with an explicit rule set.
Parser instances are reusable. Per-document state such as reference definitions, footnotes, abbreviation definitions, and deferred inline queues is created for each parse.
- Parameters:
rules (Iterable[type[Rule] | Rule]) – Rule classes or configured rule instances to enable.
- register_rule(rule)¶
Register or replace one rule by name.
- register_rules(rules)¶
Register or replace multiple rules by name.
- parse(source)¶
Parse Markdown into a root node.
- Parameters:
source (str | Iterable[str]) – Markdown source as a string or an iterable of lines.
- Returns:
Parsed document root.
- Return type:
- parse_iter(source)¶
Yield top-level block nodes as they are parsed.
This API is intended for streaming renderers and rejects rule sets that need deferred inline resolution.
- Parameters:
source (str | Iterable[str]) – Markdown source as a string or an iterable of lines.
- Returns:
Iterator of parsed block nodes.
- Raises:
StreamingUnsupportedError – If enabled rules require deferred inline transforms.
- Return type:
Iterator[Node]
- parse_blocks(text, parent_state)¶
Parse nested block content using a parent parse state.
Custom block rules should use this helper for nested Markdown content so extension state and deferred inline queues are shared with the enclosing parse.
- Parameters:
text (str) – Markdown block content.
parent_state (BlockState) – Current block state from the outer parse.
- Returns:
Parsed child nodes.
- Return type:
list[Node]
- parse_inlines(text, state=None)¶
Parse inline Markdown into child nodes.
Custom inline, block, and continuation rules can call this method when they need nested inline parsing.
- Parameters:
text (str) – Inline Markdown source.
state (BlockState | None) – Current block state, if parsing happens inside a document parse.
- Returns:
Parsed inline nodes.
- Return type:
list[Node]
- is_paragraph_interrupt(line, state=None)¶
Return whether a line would interrupt a paragraph.
Custom block parsing code can use this helper to mirror the parser’s paragraph-interruption behavior.
- Parameters:
line (str) – Candidate source line.
state (BlockState | None) – Current block state, if available.
- Returns:
Trueif the line starts an interrupting block.- Return type:
bool
- class wenmode.StreamingUnsupportedError¶
Raised when a rule set cannot be used for streaming output.