all2md.renderers.plaintext
Plain text rendering from AST.
This module provides the PlainTextRenderer class which converts AST nodes to plain, unformatted text. The renderer strips all formatting (bold, italic, headings, etc.) and outputs only the text content. This is useful for: - Feeding document content into language models - Text analysis and summarization - Search indexing - Data pipeline processing
The rendering process uses the visitor pattern to traverse the AST and extract plain text while respecting document structure.
- class all2md.renderers.plaintext.PlainTextRenderer
Bases:
NodeVisitor,InlineContentMixin,BaseRendererRender AST nodes to plain, unformatted text.
This class implements the visitor pattern to traverse an AST and generate plain text output. All formatting is stripped, leaving only the text content. Structural elements like tables and lists are rendered as plain text with simple separators.
- Parameters:
options (PlainTextOptions or None, default = None) – Plain text rendering options
Examples
Basic usage:
>>> from all2md.ast import Document, Heading, Text, Strong >>> from all2md.renderers.plaintext import PlainTextRenderer >>> from all2md.options import PlainTextOptions >>> doc = Document(children=[ ... Heading(level=1, content=[ ... Text(content="Title with "), ... Strong(content=[Text(content="bold")]) ... ]) ... ]) >>> renderer = PlainTextRenderer() >>> text = renderer.render_to_string(doc) >>> print(text) Title with bold
Initialize the plain text renderer with options.
- __init__(options: PlainTextOptions | None = None)
Initialize the plain text renderer with options.
- render_to_string(document: Document) str
Render a document AST to plain text string.
- Parameters:
document (Document) – The document node to render
- Returns:
Plain text output
- 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 (extract text only).
- 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 (extract text only).
- 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(node: Table) None
Render a Table node as plain text.
- 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 (skip in plain text).
- Parameters:
node (ThematicBreak) – Thematic break to render
- visit_html_block(node: HTMLBlock) None
Render an HTMLBlock node (skip HTML in plain text).
- Parameters:
node (HTMLBlock) – HTML block to render
- visit_emphasis(node: Emphasis) None
Render an Emphasis node (extract text only, ignore formatting).
- Parameters:
node (Emphasis) – Emphasis to render
- visit_strong(node: Strong) None
Render a Strong node (extract text only, ignore formatting).
- Parameters:
node (Strong) – Strong to render
- visit_code(node: Code) None
Render a Code node (extract text only).
- Parameters:
node (Code) – Code to render
- visit_link(node: Link) None
Render a Link node (extract text only, ignore URL).
- Parameters:
node (Link) – Link to render
- visit_image(node: Image) None
Render an Image node (use alt text only).
- Parameters:
node (Image) – Image 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 (extract text only, ignore formatting).
- Parameters:
node (Strikethrough) – Strikethrough to render
- visit_underline(node: Underline) None
Render an Underline node (extract text only, ignore formatting).
- Parameters:
node (Underline) – Underline to render
- visit_superscript(node: Superscript) None
Render a Superscript node (extract text only, ignore formatting).
- Parameters:
node (Superscript) – Superscript to render
- visit_subscript(node: Subscript) None
Render a Subscript node (extract text only, ignore formatting).
- Parameters:
node (Subscript) – Subscript to render
- visit_html_inline(node: HTMLInline) None
Render an HTMLInline node (skip HTML in plain text).
- Parameters:
node (HTMLInline) – Inline HTML to render
- visit_footnote_reference(node: FootnoteReference) None
Render a FootnoteReference node (skip in plain text).
- Parameters:
node (FootnoteReference) – Footnote reference to render
- visit_math_inline(node: MathInline) None
Render a MathInline node (extract text representation).
- Parameters:
node (MathInline) – Inline math to render
- visit_footnote_definition(node: FootnoteDefinition) None
Render a FootnoteDefinition node (skip in plain text).
- 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 (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_math_block(node: MathBlock) None
Render a MathBlock node (extract text representation).
- 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 to render
Notes
Supports multiple rendering modes via comment_mode option: - “visible”: Render as bracketed text - “ignore”: Skip comment entirely (default)
- 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: - “visible”: Render as bracketed text - “ignore”: Skip comment entirely (default)