1
0
silverbullet/website/Templates.md
2023-10-03 18:09:03 +02:00

1.8 KiB
Raw Blame History

For various use cases, SilverBullet uses Handlebars templates.

Generally templates are stored in your space as regular pages, which allows for reuse. Some examples include template/task and template/page. As a convention, we often name templates with a template/ prefix, although this is purely a convention.

Live Templates allow templates to be define inline, for instance:

template: |
   Hello, {{name}}! Today is _{{today}}_
value:
   name: Pete

Template helpers

There are a number of built-in handlebars helpers you can use

  • {{today}}: Todays date in the usual YYYY-MM-DD format
  • {{tomorrow}}: Tomorrows date in the usual YYY-MM-DD format
  • {{yesterday}}: Yesterdays date in the usual YYY-MM-DD format
  • {{lastWeek}}: Current date - 7 days
  • {{nextWeek}}: Current date + 7 days
  • {{escapeRegexp "hello/there"}} to escape a regexp, useful when injecting e.g. a page name into a query — think name =~ /{{escapeRegexp @page.name}}/ * {{replaceRegexp string regexp replacement}}: replace a regular expression in a string, example use: {{replaceRegexp name "#[^#\d\s\[\]]+\w+" ""}} to remove hashtags from a task name
  • {{json @page}} translate any (object) value to JSON, mostly useful for debugging
  • {{substring "my string" 0 3}} performs a substring operation on the first argument, which in this example would result in my
  • {{prefixLines "my string\nanother" " "}} prefixes each line (except the first) with the given prefix.
  • {{niceDate @page.lastModified}} translates any timestamp into a “nice” format (e.g. 2023-06-20).
  • The @page variable contains all page meta data (name, lastModified, contentType, as well as any custom Frontmatter attributes). You can address it like so: {{@page.name}}