silverbullet/website/API/index.md

62 lines
1.9 KiB
Markdown
Raw Normal View History

---
testattribute: 10
---
#apidoc
2025-01-17 17:41:02 +08:00
The `index` API provides functions for interacting with SilverBullet's [[Objects]], allowing you to store and query page-associated data.
## Object Operations
## index.tag(name)
Returns a given [[Objects#Tags]] as a query collection, to be queried using [[Space Lua/Lua Integrated Query]].
Example:
${query[[from index.tag("page") limit 1]]}
## index.indexObjects(page, objects)
2025-01-17 17:41:02 +08:00
Indexes an array of objects for a specific page.
Example:
```lua
local objects = {
{tag = "mytask", ref="task1", content = "Buy groceries"},
{tag = "mytask", ref="task2", content = "Write docs"}
}
index.indexObjects("my page", objects)
2025-01-17 17:41:02 +08:00
```
## index.queryLuaObjects(tag, query, scopedVariables?)
2025-01-17 17:41:02 +08:00
Queries objects using a Lua-based collection query.
Example:
```lua
local tasks = index.queryLuaObjects("mytask", {limit=3})
2025-01-17 17:41:02 +08:00
```
## index.getObjectByRef(page, tag, ref)
2025-01-17 17:41:02 +08:00
Retrieves a specific object by its reference.
Example:
```lua
local task = index.getObjectByRef("my page", "mytask", "task1")
2025-01-17 17:41:02 +08:00
if task then
print("Found task: " .. task.content)
end
```
## index.extractFrontmatter(text, extractOptions)
Extracts frontmatter from a markdown document (whose text is provided as argument), possibly cleaning it up. It also parses top-level tags consistent with SilverBullet's tag indexing system.
It returns a table with two keys:
- `frontmatter`: A table containing the parsed frontmatter.
- `text`: The text of the document, with any changes applied requested with the `extractOptions`.
The `extractOptions` is an optional table that can contain the following keys (which will affect the returned `text`):
- `removeKeys`: An array of keys to remove from the frontmatter.
- `removeTags`: A boolean or array of tags to remove from the frontmatter.
- `removeFrontmatterSection`: A boolean to remove the frontmatter section from the document.
Example applied to this page:
${(index.extractFrontmatter(editor.getText())).frontmatter}