Module

directives.decorator

@directive decorator for reducing directive boilerplate.

Provides a concise decorator API for creating directive handlers with minimal boilerplate. Works with both functions and classes.

Example (function): >>> @directive("note", options=NoteOptions) >>> def render_note(node: Directive[NoteOptions], children: str, sb: StringBuilder) -> None: ... sb.append(f'

{children}
')

Example (class): >>> @directive("gallery", options=GalleryOptions, preserves_raw_content=True) >>> class GalleryDirective: ... def render(self, node, children: str, sb: StringBuilder) -> None: ... images = self._parse_images(node.raw_content) ... ...

Functions

directive 5 Callable[[RenderFunc | t…
Decorator to create directive handlers with minimal boilerplate. Works with bo…
def directive(*names: str, options: type[DirectiveOptions] | None = None, contract: DirectiveContract | None = None, preserves_raw_content: bool = False, token_type: str | None = None) -> Callable[[RenderFunc | type], type]

Decorator to create directive handlers with minimal boilerplate.

Works with both functions (simple directives) and classes (complex directives).

Parameters
Name Type Description
*names str
options type[DirectiveOptions] | None

Options class for typed option parsing

Default:None
contract DirectiveContract | None

Optional nesting validation contract

Default:None
preserves_raw_content bool

If True, parser preserves raw content string

Default:False
token_type str | None

Token type identifier (defaults to first name)

Default:None
Returns
Callable[[RenderFunc | type], type]