Here is a list of all functions you can use in SilverBullet’s [[Expression Language]]: # Lists ## count(list) Count the number of elements in a list: ```template There are **{{count({page})}}** pages in this space. ``` ## at(list, index) Returns the `index`th element of `list` (starting from 0 of course). ```template Index 1 of our count to three is {{at([1, 2, 3], 1)}} ``` # Templates ## template(text, value) Renders a template with an optional value: ```template {{template([[Library/Core/Query/Page]], {"name": "Some page"})}} ``` # Date and time ## today() Today’s date in a `YYYY-MM-dd` format. ## tomorrow() Tomorrow’s date in a `YYYY-MM-dd` format. ## yesterday() Yesterday’s date in `YYYY-MM-dd` format. ## niceDate(timestamp) Convert a unix timestamp to a `YYYY-MM-dd` format. ## time() Current time. # String manipulation ## replace(str, match, replacement) Replace text in a string. `match` can either be a literal string or a regular expression: `replace("hello", "ell", "all")` would produce “hallo”, and `replace("hello", /l/, "b")` would produce “hebbo”. This function supports an infinite number of replacements, so you can keep adding more, e.g. `replace(str, match1, replacement1, match2, replacement2, match3, replacement3)` ## contains(str, substr) Returns whether `str` contains `substr` as a substring. ## json(obj) Convert the argument to a JSON string (for debugging purposes). ```template The current page object: {{json(@page)}} ``` ## yaml(obj) Convert the argument to a YAML string (for debugging purposes). ```template The current page object: ~~~yaml {{yaml(@page)}} ~~~ ``` # Space related ## pageExists(name) Checks if the page `name` exists: ```template This very page exists: {{pageExists(@page.name)}} And this one: {{pageExists("non-existing")}} ``` ## readPage(name) Reads in the content of the page `name` and returns it as a string.