Shared utility functions for markdown renderers. Used by static, streaming, and table_layout modules.
| Name | Signature |
|---|---|
get_block_indent | get_block_indent(tss, style_key) -> indent |
get_list_indent_per_level | get_list_indent_per_level(tss) -> indent |
expand_tabs | expand_tabs(line, tabstop) -> expanded |
clamp_display_width | clamp_display_width(text, width) -> clamped |
clamp_display_width_measured | clamp_display_width_measured(text, width) -> clamped, visual_width |
take_prefix_by_display | take_prefix_by_display(text, max_width) -> prefix, char_count, display_width |
wrap_content | wrap_content(content, width) -> lines |
inline_elements_for_tag | inline_elements_for_tag(tag, attrs) -> elements |
normalize_table_cell_content | normalize_table_cell_content(content) -> normalized |
render_thematic_break | render_thematic_break(tss, width) -> rendered |
compute_list_marker | compute_list_marker(tss, depth, list, item_count, task_info) -> marker_text, marker_width |
clip_content_with_ranges | clip_content_with_ranges(content, max_width) -> clipped, width |
build_table_border_chars | build_table_border_chars(tss) -> b |
build_table_border_line | build_table_border_line(styled_border, b, col_widths, line_type) -> line |
build_wrapped_cell_line_content | build_wrapped_cell_line_content(content, parts) -> line_content, line_width |
render_bordered_block | render_bordered_block(tss, style_base, lines, width, label, indent, pad) -> rendered |
render_bordered_content | render_bordered_content(tss, style_base, content, width, label, indent, pad) -> rendered |
compute_div_layout | compute_div_layout(tss, class, current_width) -> layout |
render_blockquote_lines | render_blockquote_lines(tss, content) -> lines |
get_block_indent(
tss,style_key) ->indent
Get block indentation from TSS for a style key
get_list_indent_per_level(
tss) ->indent
Get indent columns per list nesting level from TSS
expand_tabs(
line,tabstop) ->expanded
Expand tab characters to spaces
clamp_display_width(
text,width) ->clamped
Clamp text to a maximum display width
clamp_display_width_measured(
text,width) ->clamped,visual_width
Clamp text to a maximum display width, returning both clamped text and its visual width
take_prefix_by_display(
text,max_width) ->prefix,char_count,display_width
Get a UTF-8 prefix that fits within a display width
wrap_content(
content,width) ->lines
Wrap content with inline ranges to fit a display width
Word-wraps content.plain at width display columns, splitting
content.ranges across the resulting lines. Returns an array of
content tables {plain, ranges} — one per wrapped line — with
range positions adjusted to each line's local coordinate system.
Returns the original content in a single-element array when no
wrapping is needed.
inline_elements_for_tag(
tag,attrs) ->elements
Map an inline tag (with optional attrs) to TSS element names
normalize_table_cell_content(
content) ->normalized
Normalize table cell content to {plain, ranges} form
render_thematic_break(
tss,width) ->rendered
Render a thematic break and return the styled string with trailing newlines
compute_list_marker(
tss,depth,list,item_count,task_info) ->marker_text,marker_width
Compute list marker text, width, and continuation indent
Computes the rendered list marker for a list item. list must have
ordered (bool) and start (number) fields. task_info, when non-nil,
must have a checked field. Returns the styled marker text (including
base indent) and its display width.
clip_content_with_ranges(
content,max_width) ->clipped,width
Clip content with inline ranges to a maximum display width
build_table_border_chars(
tss) ->b
Build the 14-character table border map from TSS
build_table_border_line(
styled_border,b,col_widths,line_type) ->line
Build a styled table border line (top, separator, or bottom)
line_type is one of "top", "separator", or "bottom".
styled_border is a function that applies table.border styling to a string.
b is the border char map from build_table_border_chars.
build_wrapped_cell_line_content(
content,parts) ->line_content,line_width
Build wrapped cell line content with range remapping
Given the original cell content (with .plain and .ranges) and parts
from table_layout.wrap_text_with_spans, builds a new content table
for one wrapped line with ranges remapped to local coordinates. Returns
{plain, ranges} and the display width.
render_bordered_block(
tss,style_base,lines,width,label,indent,pad) ->rendered
Render a bordered block (code blocks) returning styled string
render_bordered_content(
tss,style_base,content,width,label,indent,pad) ->rendered
Render pre-styled content with borders (for divs)
Unlike render_bordered_block, this takes already-rendered content
with ANSI codes and wraps it in border characters.
compute_div_layout(
tss,class,current_width) ->layout
Compute div layout parameters from TSS
Returns {style_base, el_width, pad, align} for a fenced div.
render_blockquote_lines(
tss,content) ->lines
Render blockquote lines with bar prefix
Returns an array of bar-prefixed lines from captured blockquote content.