Nodes#

class wenmode.nodes.Point(line, column, offset)#

Bases: object

A 1-based source point in the parsed Markdown document.

class wenmode.nodes.Position(start, end)#

Bases: object

0-based source offset range for a node.

Root.to_ast() converts these offsets to line and column fields when the root was produced by a position-aware parser. Calling Node.to_ast() on a standalone node emits offset-only positions.

class wenmode.nodes.Node(type, data=None, position=None)#

Bases: object

Base class for all Wenmode AST nodes.

Parameters:
  • type (str) – mdast-compatible node type name.

  • data (dict[str, Any] | None) – Optional extension data used by transforms or renderers.

  • position (Position | None) – Optional 0-based source offset range.

to_ast()#

Convert this node and its children to plain Python data.

Standalone nodes do not have root-level line-start context, so source positions are serialized with offsets only. Use Root.to_ast() on a parsed document root when you need unist-style line and column fields.

Returns:

A dictionary made from strings, numbers, lists, and nested dictionaries.

Return type:

dict[str, Any]

class wenmode.nodes.Parent(type, data=None, position=None, children=<factory>)#

Bases: Node

Base class for nodes that contain child nodes.

class wenmode.nodes.Literal(type, data=None, position=None, value='')#

Bases: Node

Base class for nodes that store literal text.

class wenmode.nodes.Root(type='root', data=None, position=None, children=<factory>, _footnote_definitions=None, _line_starts=None)#

Bases: Parent

Document root node.

to_ast()#

Convert this root and its children to plain Python data.

When the root was parsed with positions=True, position offsets are converted to unist-style line and column fields.

property footnote_definitions: dict[str, FootnoteDefinition] | None#

Collected footnote definitions, if the footnote transform ran.

class wenmode.nodes.Paragraph(type='paragraph', data=None, position=None, children=<factory>)#

Bases: Parent

Paragraph node.

class wenmode.nodes.Heading(type='heading', data=None, position=None, children=<factory>, depth=1)#

Bases: Parent

Heading node.

Parameters:

depth (int) – Heading depth from 1 through 6.

class wenmode.nodes.Blockquote(type='blockquote', data=None, position=None, children=<factory>)#

Bases: Parent

Block quote container node.

class wenmode.nodes.List(type='list', data=None, position=None, children=<factory>, ordered=False, start=None, spread=False)#

Bases: Parent

Ordered or unordered list node.

class wenmode.nodes.ListItem(type='listItem', data=None, position=None, children=<factory>, checked=None, spread=False)#

Bases: Parent

List item node.

class wenmode.nodes.Code(type='code', data=None, position=None, value='', lang=None, meta=None)#

Bases: Literal

Fenced or indented code block node.

class wenmode.nodes.ThematicBreak(type='thematicBreak', data=None, position=None)#

Bases: Node

Thematic break node.

class wenmode.nodes.Html(type='html', data=None, position=None, value='')#

Bases: Literal

Raw HTML node.

class wenmode.nodes.Text(type='text', data=None, position=None, value='', _parse_emphasis=True)#

Bases: Literal

Plain text node.

class wenmode.nodes.InlineCode(type='inlineCode', data=None, position=None, value='')#

Bases: Literal

Inline code span node.

class wenmode.nodes.Strong(type='strong', data=None, position=None, children=<factory>)#

Bases: Parent

Strong emphasis node.

class wenmode.nodes.Emphasis(type='emphasis', data=None, position=None, children=<factory>)#

Bases: Parent

Emphasis node.

class wenmode.nodes.Delete(type='delete', data=None, position=None, children=<factory>)#

Bases: Parent

Deleted text node.

class wenmode.nodes.Table(type='table', data=None, position=None, children=<factory>, align=<factory>)#

Bases: Parent

Table node.

class wenmode.nodes.TableRow(type='tableRow', data=None, position=None, children=<factory>)#

Bases: Parent

Table row node.

class wenmode.nodes.TableCell(type='tableCell', data=None, position=None, children=<factory>)#

Bases: Parent

Table cell node.

Bases: Parent

Link node.

class wenmode.nodes.Image(type='image', data=None, position=None, url='', alt='', title=None)#

Bases: Node

Image node.

class wenmode.nodes.Break(type='break', data=None, position=None)#

Bases: Node

Hard line break node.

class wenmode.nodes.FootnoteReference(type='footnoteReference', data=None, position=None, identifier='', label='')#

Bases: Node

Footnote reference node.

class wenmode.nodes.FootnoteDefinition(type='footnoteDefinition', data=None, position=None, children=<factory>, identifier='', label='')#

Bases: Parent

Footnote definition node.

class wenmode.nodes.TextDirective(type='textDirective', data=None, position=None, children=<factory>, name='', attributes=None)#

Bases: Parent

Inline directive node.

class wenmode.nodes.LeafDirective(type='leafDirective', data=None, position=None, children=<factory>, name='', attributes=None)#

Bases: Parent

Leaf block directive node.

class wenmode.nodes.ContainerDirective(type='containerDirective', data=None, position=None, children=<factory>, name='', attributes=None)#

Bases: Parent

Container block directive node.

class wenmode.nodes.LiteralDirective(type='literalDirective', data=None, position=None, value='', name='', argument=None, attributes=None)#

Bases: Literal

Literal block directive node.