all2md.renderers.asciidoc

AsciiDoc rendering from AST.

This module provides the AsciiDocRenderer class which converts AST nodes to AsciiDoc text. The renderer supports configurable rendering options for controlling output format.

class all2md.renderers.asciidoc.AsciiDocRenderer

Bases: NodeVisitor, InlineContentMixin, BaseRenderer

Render AST nodes to AsciiDoc text.

This class implements the visitor pattern to traverse an AST and generate AsciiDoc output. It supports configurable rendering options.

Parameters:

options (AsciiDocRendererOptions or None, default = None) – AsciiDoc rendering options

Examples

Basic usage:

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

Initialize the AsciiDoc renderer with options.

__init__(options: AsciiDocRendererOptions | None = None)

Initialize the AsciiDoc renderer with options.

render_to_string(document: Document) str

Render a document AST to AsciiDoc string.

Parameters:

document (Document) – The document node to render

Returns:

AsciiDoc 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.

AsciiDoc uses = prefix syntax for all headings. The number of = characters determines the heading level: = is document title (level 0), == is section level 1, === is section level 2, etc.

Parameters:

node (Heading) – Heading to render

visit_paragraph(node: Paragraph) None

Render a Paragraph node with optional line wrapping.

Wraps text to options.line_length if set, while preserving hard breaks.

Parameters:

node (Paragraph) – Paragraph to render

visit_code_block(node: CodeBlock) None

Render a CodeBlock node.

Parameters:

node (CodeBlock) – Code block to render

visit_block_quote(node: BlockQuote) None

Render a BlockQuote node.

Parameters:

node (BlockQuote) – Block quote to render

visit_list(node: List) None

Render a List node.

Parameters:

node (List) – List to render

visit_list_item(node: ListItem) None

Render a ListItem node.

In AsciiDoc, block elements within list items require a list continuation line (+) to properly associate them with the list item. The continuation appears on its own line between the list item text and the block element.

Parameters:

node (ListItem) – List item to render

visit_table(node: Table) None

Render a Table node.

Parameters:

node (Table) – Table to render

visit_table_row(node: TableRow) None

Render a TableRow node (handled by visit_table).

Parameters:

node (TableRow) – Table row to render

visit_table_cell(node: TableCell) None

Render a TableCell node (handled by visit_table).

Parameters:

node (TableCell) – Table cell to render

visit_thematic_break(node: ThematicBreak) None

Render a ThematicBreak node.

Parameters:

node (ThematicBreak) – Thematic break to render

visit_html_block(node: HTMLBlock) None

Render an HTMLBlock node.

Parameters:

node (HTMLBlock) – HTML block to render

visit_comment(node: Comment) None

Render a Comment node (block-level).

AsciiDoc comments use // prefix for single-line comments. For multi-line comments, each line is prefixed with //.

Parameters:

node (Comment) – Comment block 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 node.

Parameters:

node (Emphasis) – Emphasis to render

visit_strong(node: Strong) None

Render a Strong node.

Parameters:

node (Strong) – Strong to render

visit_code(node: Code) None

Render a Code node.

Parameters:

node (Code) – Code to render

Render a Link node.

Parameters:

node (Link) – Link to render

visit_image(node: Image) None

Render an Image node.

Parameters:

node (Image) – Image to render

visit_line_break(node: LineBreak) None

Render a LineBreak node.

Parameters:

node (LineBreak) – Line break to render

visit_superscript(node: Superscript) None

Render a Superscript node.

Parameters:

node (Superscript) – Superscript to render

visit_subscript(node: Subscript) None

Render a Subscript node.

Parameters:

node (Subscript) – Subscript to render

visit_underline(node: Underline) None

Render an Underline node.

AsciiDoc doesn’t have native underline, so render as HTML.

Parameters:

node (Underline) – Underline to render

visit_html_inline(node: HTMLInline) None

Render an HTMLInline node.

Parameters:

node (HTMLInline) – Inline HTML to render

visit_comment_inline(node: CommentInline) None

Render a CommentInline node (inline).

AsciiDoc doesn’t have native inline comments, so we fall back to HTML comment syntax which is widely supported in AsciiDoc processors.

Parameters:

node (CommentInline) – Inline comment to render

visit_definition_list(node: DefinitionList) None

Render a DefinitionList node.

Parameters:

node (DefinitionList) – Definition list to render

visit_definition_term(node: DefinitionTerm) None

Render a DefinitionTerm node (handled by visit_definition_list).

Parameters:

node (DefinitionTerm) – Definition term to render

visit_definition_description(node: DefinitionDescription) None

Render a DefinitionDescription node (handled by visit_definition_list).

Parameters:

node (DefinitionDescription) – Definition description to render

visit_strikethrough(node: Any) None

Render a Strikethrough node.

Parameters:

node (Any) – Strikethrough to render

visit_footnote_reference(node: FootnoteReference) None

Render a FootnoteReference node.

AsciiDoc footnote macros only accept inline content. If the footnote definition contains block-level nodes, they will be flattened to plain text.

Parameters:

node (FootnoteReference) – Footnote reference to render

visit_footnote_definition(node: FootnoteDefinition) None

Render a FootnoteDefinition node.

Parameters:

node (FootnoteDefinition) – Footnote definition to render

visit_math_inline(node: Any) None

Render a MathInline node.

Parameters:

node (Any) – Inline math to render

visit_math_block(node: Any) None

Render a MathBlock node.

Parameters:

node (Any) – Math block to render

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

Render AST to AsciiDoc and write to output.

Parameters:
  • doc (Document) – AST Document node to render

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