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, BaseRenderer

Render 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(node: List) None

Render a List node.

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 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_text(node: Text) None

Render a Text node.

Parameters:

node (Text) – Text 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

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)

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

Render AST to plain text 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)