Files
plainleaf/docs/API/markdown.md
T

96 lines
2.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
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]] (`<!--#lua EXPR -->` ... `<!--/lua-->`) 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: <!--#lua 1 + 2 -->
old
<!--/lua-->
]]
-- 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})}