Classes
DirectiveHandler
8
▼
Protocol for directive implementations.
Implement this protocol to create custom directives. The p…
DirectiveHandler
8
▼
Protocol for directive implementations.
Implement this protocol to create custom directives. The parser calls parse() to build the AST node, and the renderer calls render() to produce HTML output.
Thread Safety: Handlers must be stateless. All mutable state must be in the AST node (which is immutable) or passed as arguments. Multiple threads may call the same handler instance concurrently.
Attributes
| Name | Type | Description |
|---|---|---|
names |
ClassVar[tuple[str, ...]]
|
Tuple of directive names this handler responds to. |
token_type |
ClassVar[str]
|
Token type identifier for the AST. Used for dispatch. |
contract |
ClassVar[DirectiveContract | None]
|
Optional nesting validation contract. |
options_class |
ClassVar[type[DirectiveOptions]]
|
Class for typed options parsing. |
preserves_raw_content |
ClassVar[bool]
|
— |
Example |
— |
("note", "warning", "tip") for admonitions |
Methods
parse
6
Directive
▼
Build the directive AST node.
Called by the parser when a directive block is e…
parse
6
Directive
▼
def parse(self, name: str, title: str | None, options: DirectiveOptions, content: str, children: Sequence[Block], location: SourceLocation) -> Directive
Build the directive AST node.
Called by the parser when a directive block is encountered. Return a Directive node to include in the AST.
Thread Safety: This method is called from parser context. Must not modify any shared state.
Parameters
| Name | Type | Description |
|---|---|---|
name |
— |
The directive name used (e.g., "note" or "warning") |
title |
— |
Optional title text after the directive name |
options |
— |
Typed options parsed from :key: value lines |
content |
— |
Raw content string (prefer children for most cases) |
children |
— |
Parsed child nodes from the directive body |
location |
— |
Source location for error messages |
Returns
Directive
A Directive node for the AST
render
3
▼
Render the directive to HTML.
Called by the renderer when a Directive node is …
render
3
▼
def render(self, node: Directive, rendered_children: str, sb: StringBuilder) -> None
Render the directive to HTML.
Called by the renderer when a Directive node is encountered. Append HTML output to the StringBuilder.
Thread Safety: This method may be called concurrently from multiple threads. Must not modify any shared state.
Parameters
| Name | Type | Description |
|---|---|---|
node |
— |
The Directive AST node to render |
rendered_children |
— |
Pre-rendered HTML of child nodes |
sb |
— |
StringBuilder to append output to |
DirectiveParseOnly
5
▼
Protocol for directives that only need custom parsing.
Use this when default rendering is acceptab…
DirectiveParseOnly
5
▼
Protocol for directives that only need custom parsing.
Use this when default rendering is acceptable but you need custom AST construction.
Attributes
| Name | Type | Description |
|---|---|---|
names |
ClassVar[tuple[str, ...]]
|
— |
token_type |
ClassVar[str]
|
— |
contract |
ClassVar[DirectiveContract | None]
|
— |
options_class |
ClassVar[type[DirectiveOptions]]
|
— |
Methods
parse
6
Directive
▼
Build the directive AST node.
parse
6
Directive
▼
def parse(self, name: str, title: str | None, options: DirectiveOptions, content: str, children: Sequence[Block], location: SourceLocation) -> Directive
Parameters
| Name | Type | Description |
|---|---|---|
name |
— |
|
title |
— |
|
options |
— |
|
content |
— |
|
children |
— |
|
location |
— |
Returns
Directive
DirectiveRenderOnly
3
▼
Protocol for directives that only need custom rendering.
Use this when default parsing is acceptab…
DirectiveRenderOnly
3
▼
Protocol for directives that only need custom rendering.
Use this when default parsing is acceptable but you need custom HTML output.
Attributes
| Name | Type | Description |
|---|---|---|
names |
ClassVar[tuple[str, ...]]
|
— |
token_type |
ClassVar[str]
|
— |
Methods
render
3
▼
Render the directive to HTML.
render
3
▼
def render(self, node: Directive, rendered_children: str, sb: StringBuilder) -> None
Parameters
| Name | Type | Description |
|---|---|---|
node |
— |
|
rendered_children |
— |
|
sb |
— |