--- tags: api/syscall references: - plug-api/syscalls/markdown.ts - client/plugos/syscalls/markdown.ts - client/markdown_renderer/markdown_render.ts - client/markdown_parser/parser.ts --- The Markdown API provides functions for parsing and rendering Markdown content. ## Markdown Operations ### markdown.parseMarkdown(text) Parses a piece of markdown text into a ParseTree. Example: ```lua local text = [[ # Hello World This is a **bold** statement. ]] local tree = markdown.parseMarkdown(text) print("Parsed markdown tree:", tree) ``` ### markdown.renderParseTree(tree) Renders a ParseTree back to markdown text. Example: ```lua local text = "# Title\n\nSome text" local tree = markdown.parseMarkdown(text) -- Modify tree if needed local rendered = markdown.renderParseTree(tree) print("Rendered markdown:", rendered) ``` ### markdown.markdownToHtml(text) Renders a piece of markdown text into HTML Example: ```lua local text = "# Title\n\nSome text" local html = markdown.markdownToHtml(text) print("Rendered html:", html) ``` ### markdown.expandMarkdown(textOrTree, options?) Expands custom markdown Lua directives and transclusions into plain markdown. Accepts either a markdown ParseTree or string. Options (all default to `true`): * `expandTransclusions`: Replace (markdown transclusions) with their content * `expandLuaDirectives`: Replace Lua directives with their evaluated values * `rewriteTasks`: Rewrite tasks to include references so that they can be updated Example: ```lua local text = "This is a some lua ${os.time()}" print("Expanded markdown:", markdown.expandMarkdown(text)) ``` ### markdown.bakeSections(text, pageName?) Re-bakes [[Baked Sections]] (`` ... ``) in `text` and returns the updated markdown. Sections whose expression can’t produce portable markdown (an evaluation error, or an HTML-only widget) are left unchanged. Example: ```lua local text = [[ Total: old ]] -- Returns the text with the body refreshed to "3" print(markdown.bakeSections(text)) ``` ### markdown.objectsToTable(data, options?) Transforms a list of tables into a markdown table. Supported options: * `renderCell(val, key)` custom cell renderer Example: ${markdown.objectsToTable({{name="Pete", age=20}, {name="Jane", age=32}}, { renderCell=function(v, k) if k == "age" and v > 20 then return "*" .. v .. "*" else return v end end})}