Rules¶
For a compact lookup table of preset membership, generated nodes, rule options, and streaming compatibility, see Rule matrix.
Rule Base Classes¶
- class wenmode.rules.Rule(name)¶
Base class for parser rules.
- Parameters:
name (str) – Stable rule name. Parser rule dictionaries are keyed by this value.
- class wenmode.rules.BlockRule(name, pattern)¶
Base class for block-level Markdown rules.
- Parameters:
pattern (str) – Regular expression pattern used to detect block openers.
- parse(parser, state, match)¶
Parse a matched block opener.
Implementations must advance
statewhen they consume input.- Parameters:
parser (Parser) – Active parser.
state (BlockState) – Current block state.
match (re.Match[str]) – Match object from the compiled block opener.
- Returns:
Parsed node, or
Noneif the rule declines the match.- Return type:
Node | None
- class wenmode.rules.ContinueRule(name)¶
Base class for rules that transform paragraph continuations.
- matches(line)¶
Return whether a line should be checked by this continuation rule.
- parse_paragraph_continuation(parser, state, lines)¶
Parse a paragraph continuation.
- Parameters:
parser (Parser) – Active parser.
state (BlockState) – Current block state positioned at the continuation line.
lines (list[str]) – Paragraph lines collected so far.
- Returns:
Replacement node, or
Noneto keep parsing the paragraph.- Return type:
Node | None
- class wenmode.rules.InlineRule(name, pattern, trigger_chars='')¶
Base class for inline Markdown rules.
- Parameters:
pattern (str) – Regular expression pattern used by this inline rule.
trigger_chars (str) – Optional literal characters that can start the rule. Supplying trigger characters lets the parser dispatch inline rules more efficiently.
- search(text, pos=0)¶
Search for the next candidate match.
Override this method for rules that need custom scanning behavior.
- parse(parser, text, match, state=None)¶
Parse a matched inline opener.
- Parameters:
parser (Parser) – Active parser.
text (str) – Full inline source text.
match (re.Match[str]) – Match object returned by this rule.
state (BlockState | None) – Current block state, if available.
- Returns:
A
(node, end_index)pair. Return(None, match.start())to decline the match.- Return type:
tuple[Node | None, int]
- class wenmode.rules.RootTransform(*args, **kwargs)¶
Protocol for document-wide transforms attached by rules.
Root transforms can collect definitions, request helper rules, defer inline parsing, and update the parsed root after block parsing completes.
- prepare(parser, root, state)¶
Prepare document-wide state before deferred inlines resolve.
- transform(parser, root, state)¶
Update the root after deferred inlines have resolved.
Block Rules¶
- class wenmode.rules.ThematicBreak¶
Parse thematic breaks such as
---,***, and___.Markdown syntax:
---
- class wenmode.rules.FencedCode¶
Parse fenced code blocks opened by backticks or tildes.
Markdown syntax:
```python print(1) ```
- class wenmode.rules.IndentedCode¶
Parse indented code blocks.
Markdown syntax:
print(1)
- class wenmode.rules.HtmlBlock(disallowed_tags=())¶
Parse CommonMark HTML block starts.
Markdown syntax:
<div>HTML</div>- Parameters:
disallowed_tags (Sequence[str]) – HTML tag names that should be escaped during parsing.
- class wenmode.rules.List(task=False)¶
Parse ordered and unordered lists.
Markdown syntax:
- item- Parameters:
task (bool) – Parse GFM task list markers when
True.
- class wenmode.rules.AtxHeading(id_transform=False)¶
Parse hash-prefixed ATX headings.
Markdown syntax:
# Heading- Parameters:
id_transform (HeadingIdTransformOption) –
Trueor a custom transform to generate heading IDs.
- class wenmode.rules.SetextHeading(id_transform=False)¶
Parse setext headings from paragraph continuations.
Markdown syntax:
Heading ---
- Parameters:
id_transform (HeadingIdTransformOption) –
Trueor a custom transform to generate heading IDs.
- class wenmode.rules.Blockquote¶
Parse
>block quote containers.Markdown syntax:
> blockquote
- class wenmode.rules.Table¶
Parse GFM pipe tables.
Markdown syntax:
| A | B | | --- | --- | | x | y |
- class wenmode.rules.FootnoteDefinition¶
Parse footnote definition blocks.
Markdown syntax:
[^a]: Footnote text.
- class wenmode.rules.Abbreviation¶
Parse abbreviation definitions and rewrite matching text nodes.
Markdown syntax:
HTML *[HTML]: HyperText Markup Language
- class wenmode.rules.DefinitionList¶
Parse colon-prefixed definition list continuations.
Markdown syntax:
Term : Definition
- class wenmode.rules.MathBlock¶
Parse display math blocks fenced by
$$markers.Markdown syntax:
$$ x + y $$
- class wenmode.rules.BlockSpoiler¶
Parse
>!block spoiler containers.Markdown syntax:
>! hidden text
- class wenmode.rules.LeafDirective¶
Parse mdast-style leaf directives such as
::name[label].Markdown syntax:
::toc[On this page]{min=2 max=3}
- class wenmode.rules.ContainerDirective¶
Parse mdast-style container directives fenced with colons.
Markdown syntax:
:::note[Title] Body. :::
- class wenmode.rules.FencedDirective¶
Parse MyST-style fenced directives such as code fences with
{name}.Markdown syntax:
```{note} Title Body. ```
- class wenmode.rules.ReferenceDefinition¶
Parse link and image reference definitions.
Markdown syntax:
[label]: https://example.com "Title"
Inline Rules¶
- class wenmode.rules.BackslashEscape¶
Parse backslash escapes for Markdown punctuation.
Markdown syntax:
\*
- class wenmode.rules.CharacterReference¶
Parse named and numeric character references.
Markdown syntax:
©
- class wenmode.rules.HardBreak¶
Parse hard line breaks created with backslash or trailing spaces.
Markdown syntax:
line\ break
- class wenmode.rules.Autolink¶
Parse angle-bracket URI and email autolinks.
Markdown syntax:
<https://example.com>
- class wenmode.rules.RawHtml(disallowed_tags=(), comment_style='commonmark')¶
Parse inline raw HTML.
Markdown syntax:
<span>HTML</span>- Parameters:
disallowed_tags (Sequence[str]) – HTML tag names that should be escaped during parsing.
comment_style (Literal['commonmark', 'gfm']) –
"commonmark"uses CommonMark 0.31-style inline comments."gfm"uses the stricter GFM 0.29 comment grammar.
- class wenmode.rules.Image(references=True)¶
Parse inline and reference-style images.
Markdown syntax:
- Parameters:
references (bool) – Enable reference-style images and reference definitions.
- class wenmode.rules.Link(references=True)¶
Parse inline and reference-style links.
Markdown syntax:
[label](https://example.com)- Parameters:
references (bool) – Enable reference-style links and reference definitions.
- class wenmode.rules.InlineCode¶
Parse inline code spans.
Markdown syntax:
`code`
- class wenmode.rules.Emphasis¶
Parse emphasis and strong emphasis delimiters.
Markdown syntax:
*emphasis* and **strong**
- class wenmode.rules.Strikethrough¶
Parse deletion spans delimited by tildes.
Markdown syntax:
~~deleted~~
- class wenmode.rules.ExtendedAutolink¶
Parse bare URL and email autolinks.
Markdown syntax:
https://example.com
- class wenmode.rules.Mark¶
Parse highlighted text delimited by
==.Markdown syntax:
==marked==
- class wenmode.rules.Insert¶
Parse inserted text delimited by
^^.Markdown syntax:
^^inserted^^
- class wenmode.rules.Superscript¶
Parse caret-delimited superscript spans.
Markdown syntax:
2^10^
- class wenmode.rules.Subscript¶
Parse tilde-delimited subscript spans.
Markdown syntax:
H~2~O
- class wenmode.rules.Ruby¶
Parse ruby annotation syntax.
Markdown syntax:
[漢字(kanji)]
- class wenmode.rules.InlineSpoiler¶
Parse spoiler spans delimited by
>!and!<.Markdown syntax:
>! secret !<
- class wenmode.rules.InlineMath¶
Parse inline math delimited by dollar signs.
Markdown syntax:
$x + y$
- class wenmode.rules.TextDirective¶
Parse mdast-style text directives such as
:name[label].Markdown syntax:
:abbr[HTML]{title="HyperText Markup Language"}
- class wenmode.rules.Role¶
Parse MyST-style inline roles.
Markdown syntax:
{iconify}`devicon:pypi`
- class wenmode.rules.Footnote¶
Parse footnote references and collect matching definitions.
Markdown syntax:
A note[^a]. [^a]: Footnote text.