Classes
HeadingInfo
3
▼
Heading metadata collected during rendering.
Used to build TOC without post-render regex scanning.…
HeadingInfo
3
▼
Heading metadata collected during rendering.
Used to build TOC without post-render regex scanning. Collected by HtmlRenderer during the AST walk.
Attributes
| Name | Type | Description |
|---|---|---|
level |
int
|
— |
text |
str
|
— |
slug |
str
|
— |
HtmlRenderer
21
▼
Render AST to HTML using StringBuilder pattern.
O(n) rendering using StringBuilder for string accu…
HtmlRenderer
21
▼
Render AST to HTML using StringBuilder pattern.
O(n) rendering using StringBuilder for string accumulation. All state is local to each render() call.
Usage:
>>> from patitas.parser import Parser
>>> parser = Parser()
>>> doc = parser.parse("# Hello **World**")
>>> renderer = HtmlRenderer()
>>> html = renderer.render(doc)
'<h1>Hello <strong>World</strong></h1>\n'
Thread Safety:
Multiple threads can render concurrently without synchronization.
Each call creates independent StringBuilder.
Methods
render
1
str
▼
Render document AST to HTML string.
**Thread Safety:**
Creates independent Str…
render
1
str
▼
def render(self, node: Document) -> str
Render document AST to HTML string.
Thread Safety: Creates independent StringBuilder per call. Safe for concurrent execution.
Parameters
| Name | Type | Description |
|---|---|---|
node |
— |
Document AST root |
Returns
str
HTML string
get_headings
0
list[HeadingInfo]
▼
Get heading info collected during last render.
get_headings
0
list[HeadingInfo]
▼
def get_headings(self) -> list[HeadingInfo]
Returns
list[HeadingInfo]
List of HeadingInfo from the last render() call.
Empty if render() hasn't been called.
Internal Methods 19 ▼
__init__
1
▼
Initialize renderer.
__init__
1
▼
def __init__(self, source: str = '') -> None
Parameters
| Name | Type | Description |
|---|---|---|
source |
— |
Original source buffer for zero-copy extraction Default:''
|
_render_block
2
▼
Render a block node.
_render_block
2
▼
def _render_block(self, block: Block, sb: StringBuilder) -> None
Parameters
| Name | Type | Description |
|---|---|---|
block |
— |
|
sb |
— |
_render_heading
2
▼
Render heading with ID for anchoring.
_render_heading
2
▼
def _render_heading(self, heading: Heading, sb: StringBuilder) -> None
Parameters
| Name | Type | Description |
|---|---|---|
heading |
— |
|
sb |
— |
_render_paragraph
2
▼
Render paragraph.
_render_paragraph
2
▼
def _render_paragraph(self, para: Paragraph, sb: StringBuilder) -> None
Parameters
| Name | Type | Description |
|---|---|---|
para |
— |
|
sb |
— |
_render_fenced_code
2
▼
Render fenced code block.
_render_fenced_code
2
▼
def _render_fenced_code(self, code: FencedCode, sb: StringBuilder) -> None
Parameters
| Name | Type | Description |
|---|---|---|
code |
— |
|
sb |
— |
_render_indented_code
2
▼
Render indented code block.
_render_indented_code
2
▼
def _render_indented_code(self, code: IndentedCode, sb: StringBuilder) -> None
Parameters
| Name | Type | Description |
|---|---|---|
code |
— |
|
sb |
— |
_render_blockquote
2
▼
Render block quote.
_render_blockquote
2
▼
def _render_blockquote(self, quote: BlockQuote, sb: StringBuilder) -> None
Parameters
| Name | Type | Description |
|---|---|---|
quote |
— |
|
sb |
— |
_render_list
2
▼
Render ordered or unordered list.
_render_list
2
▼
def _render_list(self, lst: List, sb: StringBuilder) -> None
Parameters
| Name | Type | Description |
|---|---|---|
lst |
— |
|
sb |
— |
_render_list_item
3
▼
Render list item.
CommonMark:
- Tight lists: Single paragraph items render as …
_render_list_item
3
▼
def _render_list_item(self, item: ListItem, sb: StringBuilder, tight: bool) -> None
Render list item.
CommonMark:
- Tight lists: Single paragraph items render as text (no
tags)
- Loose lists: All paragraphs wrapped in
tags
Parameters
| Name | Type | Description |
|---|---|---|
item |
— |
|
sb |
— |
|
tight |
— |
_render_table
2
▼
Render GFM-style table.
_render_table
2
▼
def _render_table(self, table: Table, sb: StringBuilder) -> None
Parameters
| Name | Type | Description |
|---|---|---|
table |
— |
|
sb |
— |
_render_table_row
4
▼
Render table row.
_render_table_row
4
▼
def _render_table_row(self, row: TableRow, sb: StringBuilder, is_header: bool, alignments: tuple[str | None, ...]) -> None
Parameters
| Name | Type | Description |
|---|---|---|
row |
— |
|
sb |
— |
|
is_header |
— |
|
alignments |
— |
_render_math_block
2
▼
Render block math.
_render_math_block
2
▼
def _render_math_block(self, math: MathBlock, sb: StringBuilder) -> None
Parameters
| Name | Type | Description |
|---|---|---|
math |
— |
|
sb |
— |
_render_directive
2
▼
Render directive block.
If a directive registry is configured and has a handle…
_render_directive
2
▼
def _render_directive(self, directive: Directive[Any], sb: StringBuilder) -> None
Render directive block.
If a directive registry is configured and has a handler for this directive, use it. Otherwise, render as a generic container.
Parameters
| Name | Type | Description |
|---|---|---|
directive |
— |
|
sb |
— |
_render_inlines
2
▼
Render a sequence of inline nodes.
_render_inlines
2
▼
def _render_inlines(self, inlines: tuple[Inline, ...], sb: StringBuilder) -> None
Parameters
| Name | Type | Description |
|---|---|---|
inlines |
— |
|
sb |
— |
_render_inline
2
▼
Render an inline node.
_render_inline
2
▼
def _render_inline(self, inline: Inline, sb: StringBuilder) -> None
Parameters
| Name | Type | Description |
|---|---|---|
inline |
— |
|
sb |
— |
_render_role
2
▼
Render inline role.
_render_role
2
▼
def _render_role(self, role: Role, sb: StringBuilder) -> None
Parameters
| Name | Type | Description |
|---|---|---|
role |
— |
|
sb |
— |
_extract_text
1
str
▼
Extract plain text from inline nodes.
_extract_text
1
str
▼
def _extract_text(self, inlines: tuple[Inline, ...]) -> str
Parameters
| Name | Type | Description |
|---|---|---|
inlines |
— |
Returns
str
_collect_footnotes
1
▼
Collect footnote definitions from document.
_collect_footnotes
1
▼
def _collect_footnotes(self, doc: Document) -> None
Parameters
| Name | Type | Description |
|---|---|---|
doc |
— |
_render_footnotes_section
1
▼
Render footnotes section at end of document.
_render_footnotes_section
1
▼
def _render_footnotes_section(self, sb: StringBuilder) -> None
Parameters
| Name | Type | Description |
|---|---|---|
sb |
— |
Functions
html_escape
1
str
▼
Escape HTML special characters.
CommonMark-compliant: escapes , &, " but NOT s…
html_escape
1
str
▼
def html_escape(s: str) -> str
Escape HTML special characters.
CommonMark-compliant: escapes <, >, &, " but NOT single quotes. Python's html.escape() escapes ' to ' which CommonMark doesn't require.
Parameters
| Name | Type | Description |
|---|---|---|
s |
str |
Returns
str
_encode_url
1
str
▼
Encode URL for CommonMark compliance.
CommonMark requires:
1. Decode HTML enti…
_encode_url
1
str
▼
def _encode_url(url: str) -> str
Encode URL for CommonMark compliance.
CommonMark requires:
- Decode HTML entities (e.g., ä → ä)
- Percent-encode special characters (spaces, backslashes, non-ASCII)
Returns URL safe for href attribute (still needs html_escape for quotes).
Parameters
| Name | Type | Description |
|---|---|---|
url |
str |
Returns
str