96 lines
2.4 KiB
Markdown
96 lines
2.4 KiB
Markdown
---
|
||
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})}
|
||
|