tags: api/space-lua references:
The Space Lua API provides functions for working with Lua expressions and templates.
spacelua.baseUrl()
Returns the SilverBullet instance's base URL, or nil when run on the server.
Returns:
string|nilExample:
local url = spacelua.baseUrl()
print(url)
spacelua.describe(functionOrName)
Returns structured documentation for a Lua function value or dotted API name.
Parameters:
functionOrName (function|string) — Function value or dotted API name to inspect.Returns:
table|nil — Structured function metadata, or nil when the target is not a function.Example:
local info = spacelua.describe(editor.getText)
print(info.name, info.kind, info.see)
local sameInfo = spacelua.describe("editor.getText")
spacelua.evalExpression(parsedExpr, envAugmentation?)
Evaluates a parsed Lua expression, optionally with additional environment values.
Parameters:
parsedExpr (table) — Parsed expression AST.envAugmentation? (table) — Values added to the expression environment.Returns:
Example:
local parsed = spacelua.parseExpression("x + y")
local result = spacelua.evalExpression(parsed, {x = 1, y = 2})
print(result)
spacelua.interpolate(template, envAugmentation?)
Interpolates ${...} Lua expressions in a string, optionally with additional environment values.
Parameters:
template (string) — Template containing ${...} expressions.envAugmentation? (table) — Values added to the interpolation environment.Returns:
string — Interpolated string.Example:
local greeting = spacelua.interpolate("Hello ${name}!", {name = "Pete"})
print(greeting)
spacelua.listFunctions(namespace?)
Lists documented functions in the global environment or an API namespace.
Parameters:
namespace? (table|string) — Namespace table or dotted name; omit for globals.Returns:
table — Function metadata records.Example:
for info in each(spacelua.listFunctions("editor")) do
print(info.name, info.description or info.see)
end
spacelua.parseBlock(code)
Parses a Lua chunk and returns its AST. Blocks retain comments in source order with their exact text, kind, and source range.
Parameters:
code (string) — Lua code to parse.Returns:
table — Parsed block AST.Example:
local parsed = spacelua.parseBlock("local x = 1\nreturn x + 2")
spacelua.parseExpression(luaExpression)
Parses a Lua expression and returns its AST.
Parameters:
luaExpression (string) — Lua expression to parse.Returns:
table — Parsed expression AST.Example:
local parsed = spacelua.parseExpression("1 + 1")
spacelua.prettyPrintBlock(block, options?)
Pretty-prints a parsed Lua block AST. Comments are preserved while their placement and indentation are normalized.
Parameters:
block (table) — Parsed block AST.options? (table) — Formatting options: indentWidth, quote, and trailingComma.Returns:
string — Formatted Lua source.Example:
local formatted = spacelua.prettyPrintBlock(spacelua.parseBlock("if a then return 1 end"))
print(formatted)
spacelua.prettyPrintExpression(parsedExpr, options?)
Pretty-prints a parsed Lua expression AST.
Parameters:
parsedExpr (table) — Parsed expression AST.options? (table) — Formatting options: indentWidth, quote, and trailingComma.Returns:
string — Formatted Lua source.Example:
local parsed = spacelua.parseExpression("{a=1,b=2}")
print(spacelua.prettyPrintExpression(parsed))
spacelua.renderApiDocumentation(target?)
Renders API documentation for a function, namespace, or the global environment as Markdown.
Parameters:
target? (function|table|string) — Function value, namespace table, or dotted API name to document; omit for globals.Returns:
string — Rendered Markdown.Examples:
Render a namespace as a live API-page directive.
${spacelua.renderApiDocumentation("lua")}
Render one function by its dotted API name.
${spacelua.renderApiDocumentation("editor.getText")}