all2md.renderers.dokuwiki

DokuWiki rendering from AST.

This module provides the DokuWikiRenderer class which converts AST nodes to DokuWiki markup text. The renderer supports configurable rendering options for controlling output format suitable for DokuWiki-based wikis.

class all2md.renderers.dokuwiki.DokuWikiRenderer

Bases: NodeVisitor, InlineContentMixin, BaseRenderer

Render AST nodes to DokuWiki markup text.

This class implements the visitor pattern to traverse an AST and generate DokuWiki output suitable for DokuWiki-based wikis.

Parameters:

options (DokuWikiOptions or None, default = None) – DokuWiki rendering options

Examples

Basic usage:

>>> from all2md.ast import Document, Heading, Text
>>> from all2md.renderers.dokuwiki import DokuWikiRenderer
>>> doc = Document(children=[
...     Heading(level=1, content=[Text(content="Title")])
... ])
>>> renderer = DokuWikiRenderer()
>>> wiki_text = renderer.render_to_string(doc)
>>> print(wiki_text)
====== Title ======

Initialize the DokuWiki renderer with options.

__init__(options: DokuWikiOptions | None = None)

Initialize the DokuWiki renderer with options.

render_to_string(document: Document) str

Render a document AST to DokuWiki markup string.

Parameters:

document (Document) – The document node to render

Returns:

DokuWiki markup text

Return type:

str

visit_document(node: Document) None

Render a Document node.

Parameters:

node (Document) – Document to render

visit_heading(node: Heading) None

Render a Heading node.

DokuWiki headings use equals signs: ====== Level 1 ====== Level calculation: 6 equals for level 1, 5 for level 2, etc.

Parameters:

node (Heading) – Heading to render

visit_paragraph(node: Paragraph) None

Render a Paragraph node.

Parameters:

node (Paragraph) – Paragraph to render

visit_code_block(node: CodeBlock) None

Render a CodeBlock node.

DokuWiki code blocks use <code> or <code language>.

Parameters:

node (CodeBlock) – Code block to render

visit_block_quote(node: BlockQuote) None

Render a BlockQuote node.

DokuWiki blockquotes use > at the start of each line.

Parameters:

node (BlockQuote) – Block quote to render

visit_list(node: List) None

Render a List node.

DokuWiki lists use * for unordered and - for ordered. Nested lists are indented with 2 spaces per level.

Parameters:

node (List) – List to render

visit_list_item(node: ListItem) None

Render a ListItem node.

Parameters:

node (ListItem) – List item to render

visit_table(node: Table) None

Render a Table node.

DokuWiki tables use ^ for headers and | for cells.

Parameters:

node (Table) – Table to render

visit_table_row(node: TableRow) None

Render a TableRow node.

Note: Table rows are rendered by visit_table, not individually.

Parameters:

node (TableRow) – Table row to render

visit_table_cell(node: TableCell) None

Render a TableCell node.

Note: Table cells are rendered by _render_table_row.

Parameters:

node (TableCell) – Table cell to render

visit_thematic_break(node: ThematicBreak) None

Render a ThematicBreak node.

DokuWiki uses —- for horizontal rules.

Parameters:

node (ThematicBreak) – Thematic break to render

visit_text(node: Text) None

Render a Text node.

Parameters:

node (Text) – Text to render

visit_emphasis(node: Emphasis) None

Render an Emphasis (italic) node.

DokuWiki uses // for italic.

Parameters:

node (Emphasis) – Emphasis to render

visit_strong(node: Strong) None

Render a Strong (bold) node.

DokuWiki uses ** for bold.

Parameters:

node (Strong) – Strong to render

visit_code(node: Code) None

Render an inline Code node.

DokuWiki uses ‘’ for monospace (two single quotes). Can optionally use <code> tags if monospace_fence is enabled.

Parameters:

node (Code) – Code to render

Render a Link node.

DokuWiki uses [[url]] or [[url|text]].

Parameters:

node (Link) – Link to render

visit_image(node: Image) None

Render an Image node.

DokuWiki uses {{image.png}} or {{image.png|alt text}}.

Parameters:

node (Image) – Image to render

visit_line_break(node: LineBreak) None

Render a LineBreak node.

DokuWiki uses \ for hard line breaks. Soft line breaks are rendered as newlines.

Parameters:

node (LineBreak) – Line break to render

visit_strikethrough(node: Strikethrough) None

Render a Strikethrough node.

DokuWiki uses <del>text</del> for strikethrough.

Parameters:

node (Strikethrough) – Strikethrough to render

visit_underline(node: Underline) None

Render an Underline node.

DokuWiki uses __ for underline.

Parameters:

node (Underline) – Underline to render

visit_superscript(node: Superscript) None

Render a Superscript node.

DokuWiki uses <sup>text</sup> for superscript.

Parameters:

node (Superscript) – Superscript to render

visit_subscript(node: Subscript) None

Render a Subscript node.

DokuWiki uses <sub>text</sub> for subscript.

Parameters:

node (Subscript) – Subscript to render

visit_html_block(node: HTMLBlock) None

Render an HTMLBlock node.

Parameters:

node (HTMLBlock) – HTML block to render

visit_html_inline(node: HTMLInline) None

Render an HTMLInline node.

Parameters:

node (HTMLInline) – HTML inline to render

visit_footnote_reference(node: FootnoteReference) None

Render a FootnoteReference node.

DokuWiki uses ((footnote text)) for inline footnotes. Since we only have a reference ID, we render a placeholder.

Parameters:

node (FootnoteReference) – Footnote reference to render

visit_footnote_definition(node: FootnoteDefinition) None

Render a FootnoteDefinition node.

DokuWiki doesn’t have separate footnote definitions. Footnotes are inline using ((text)).

Parameters:

node (FootnoteDefinition) – Footnote definition to render

visit_definition_list(node: DefinitionList) None

Render a DefinitionList node.

DokuWiki doesn’t have native definition list syntax. Use HTML <dl>, <dt>, <dd> if use_html_for_unsupported is enabled.

Parameters:

node (DefinitionList) – Definition list to render

visit_definition_term(node: DefinitionTerm) None

Render a DefinitionTerm node.

Parameters:

node (DefinitionTerm) – Definition term to render

visit_definition_description(node: DefinitionDescription) None

Render a DefinitionDescription node.

Parameters:

node (DefinitionDescription) – Definition description to render

visit_math_inline(node: MathInline) None

Render a MathInline node.

DokuWiki typically uses plugin syntax for math. Render as <math>content</math> if use_html_for_unsupported.

Parameters:

node (MathInline) – Inline math to render

visit_math_block(node: MathBlock) None

Render a MathBlock node.

DokuWiki typically uses plugin syntax for math blocks. Render as <MATH>content</MATH> if use_html_for_unsupported.

Parameters:

node (MathBlock) – Math block to render

visit_comment(node: Comment) None

Render a Comment node according to comment_mode option.

Parameters:

node (Comment) – Comment block to render

Notes

Supports multiple rendering modes via comment_mode option: - “html”: Use HTML comment syntax <!– –> (default) - “visible”: Render as visible text - “ignore”: Skip comment entirely

visit_comment_inline(node: CommentInline) None

Render a CommentInline node according to comment_mode option.

Parameters:

node (CommentInline) – Inline comment to render

Notes

Supports multiple rendering modes via comment_mode option: - “html”: Use C-style comment syntax (default) - “visible”: Render as visible bracketed text - “ignore”: Skip comment entirely

render(document: Document, output: str | Path | IO[bytes] | IO[str]) None

Render a document to an output destination.

Parameters:
  • document (Document) – Document to render

  • output (str, Path, IO[bytes], or IO[str]) – Output destination (file path or file-like object)