all2md.renderers.odt
ODT rendering from AST.
This module provides the OdtRenderer class which converts AST nodes to OpenDocument Text (.odt) format. The renderer uses the odfpy library to generate properly formatted ODT documents.
The rendering process uses the visitor pattern to traverse the AST and generate ODT content with appropriate styles and formatting.
- class all2md.renderers.odt.OdtRenderer
Bases:
NodeVisitor,BaseRendererRender AST nodes to ODT format.
This class implements the visitor pattern to traverse an AST and generate an OpenDocument Text document. It uses odfpy for document generation and supports most common formatting features.
- Parameters:
options (OdtRendererOptions or None, default = None) – ODT formatting options
Examples
Basic usage:
>>> from all2md.ast import Document, Heading, Text >>> from all2md.options.odt import OdtRendererOptions >>> from all2md.renderers.odt import OdtRenderer >>> doc = Document(children=[ ... Heading(level=1, content=[Text(content="Title")]) ... ]) >>> options = OdtRendererOptions() >>> renderer = OdtRenderer(options) >>> renderer.render(doc, "output.odt")
Initialize the ODT renderer with options.
- __init__(options: OdtRendererOptions | None = None)
Initialize the ODT renderer with options.
- render(doc: Document, output: str | Path | IO[bytes]) None
Render the AST to an ODT file.
- Parameters:
doc (Document) – AST Document node to render
output (str, Path, or IO[bytes]) – Output destination (file path or file-like object)
- Raises:
RenderingError – If ODT generation fails
- render_to_bytes(doc: Document) bytes
Render the AST to ODT bytes.
- Parameters:
doc (Document) – AST Document node to render
- Returns:
ODT file content as bytes
- Return type:
bytes
- Raises:
RenderingError – If ODT generation fails
- visit_document(node: Document) None
Render a Document node.
- Parameters:
node (Document) – Document to render
- visit_heading(node: Heading) None
Render a Heading node.
- 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.
- 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_item(node: ListItem) None
Render a ListItem node.
- Parameters:
node (ListItem) – List item to render
- visit_table_row(node: TableRow) None
Render a TableRow node.
- Parameters:
node (TableRow) – Table row to render
- visit_table_cell(node: TableCell) None
Render a TableCell node.
- 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_emphasis(node: Emphasis) None
Render an Emphasis node.
- Parameters:
node (Emphasis) – Emphasis to render
- visit_line_break(node: LineBreak) None
Render a LineBreak node.
- Parameters:
node (LineBreak) – Line break to render
- visit_strikethrough(node: Strikethrough) None
Render a Strikethrough node.
- Parameters:
node (Strikethrough) – Strikethrough to render
- visit_underline(node: Underline) None
Render an Underline node.
- Parameters:
node (Underline) – Underline 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_html_inline(node: HTMLInline) None
Render an HTMLInline node.
- Parameters:
node (HTMLInline) – Inline HTML to render
- visit_footnote_reference(node: FootnoteReference) None
Render a FootnoteReference node.
- Parameters:
node (FootnoteReference) – Footnote reference to render
- visit_math_inline(node: MathInline) None
Render a MathInline node.
- Parameters:
node (MathInline) – Inline math to render
- visit_footnote_definition(node: FootnoteDefinition) None
Render a FootnoteDefinition node.
- Parameters:
node (FootnoteDefinition) – Footnote definition 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.
- 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_block(node: MathBlock) None
Render a MathBlock node.
- Parameters:
node (MathBlock) – Math block to render
- visit_comment(node: Comment) None
Render a Comment node (block-level).
- Parameters:
node (Comment) – Comment block to render
- visit_comment_inline(node: CommentInline) None
Render a CommentInline node (inline).
- Parameters:
node (CommentInline) – Inline comment to render