#apidoc

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 Lua Integrated Query.

Example:

${query[[from index.tag("page") limit 1]]}

index.indexObjects(page, objects)

Indexes an array of objects for a specific page.

Example:
local objects = {
    {tag = "mytask", ref="task1", content = "Buy groceries"},
    {tag = "mytask", ref="task2", content = "Write docs"}
}
index.indexObjects("my page", objects)


index.queryLuaObjects(tag, query, scopedVariables?)

Queries objects using a Lua-based collection query.

Example:
local tasks = index.queryLuaObjects("mytask", {limit=3})


index.getObjectByRef(page, tag, ref)

Retrieves a specific object by its reference.

Example:
local task = index.getObjectByRef("my page", "mytask", "task1")
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}