Functions Reference
Global Functions
Function
Signature
Description
date()
date(string): date
Parse string to date. Format: YYYY-MM-DD HH:mm:ss
duration()
duration(string): duration
Parse duration string
now()
now(): date
Current date and time
today()
today(): date
Current date (time = 00:00:00)
if()
if(condition, trueResult, falseResult?)
Conditional
min()
min(n1, n2, ...): number
Smallest number
max()
max(n1, n2, ...): number
Largest number
number()
number(any): number
Convert to number
link()
link(path, display?): Link
Create a link
list()
list(element): List
Wrap in list if not already
file()
file(path): file
Get file object
image()
image(path): image
Create image for rendering
icon()
icon(name): icon
Lucide icon by name
html()
html(string): html
Render as HTML
escapeHTML()
escapeHTML(string): string
Escape HTML characters
Any Type Functions
Function
Signature
Description
isTruthy()
any.isTruthy(): boolean
Coerce to boolean
isType()
any.isType(type): boolean
Check type
toString()
any.toString(): string
Convert to string
Date Functions & Fields
Fields: date.year, date.month, date.day, date.hour, date.minute, date.second, date.millisecond
Function
Signature
Description
date()
date.date(): date
Remove time portion
format()
date.format(string): string
Format with Moment.js pattern
time()
date.time(): string
Get time as string
relative()
date.relative(): string
Human-readable relative time
isEmpty()
date.isEmpty(): boolean
Always false for dates
Duration Type
When subtracting two dates, the result is a Duration type (not a number). Duration has its own properties and methods.
Duration Fields:
| Field | Type | Description |
|-------|------|-------------|
| duration.days | Number | Total days in duration |
| duration.hours | Number | Total hours in duration |
| duration.minutes | Number | Total minutes in duration |
| duration.seconds | Number | Total seconds in duration |
| duration.milliseconds | Number | Total milliseconds in duration |
IMPORTANT: Duration does NOT support .round(), .floor(), .ceil() directly. You must access a numeric field first (like .days), then apply number functions.
# CORRECT: Calculate days between dates
"(date(due_date) - today()).days" # Returns number of days
"(now() - file.ctime).days" # Days since created
# CORRECT: Round the numeric result if needed
"(date(due_date) - today()).days.round(0)" # Rounded days
"(now() - file.ctime).hours.round(0)" # Rounded hours
# WRONG - will cause error:
# "((date(due) - today()) / 86400000).round(0)" # Duration doesn't support division then round
Date Arithmetic
# Duration units: y/year/years, M/month/months, d/day/days,
# w/week/weeks, h/hour/hours, m/minute/minutes, s/second/seconds
# Add/subtract durations
"date + \"1M\"" # Add 1 month
"date - \"2h\"" # Subtract 2 hours
"now() + \"1 day\"" # Tomorrow
"today() + \"7d\"" # A week from today
# Subtract dates returns Duration type
"now() - file.ctime" # Returns Duration
"(now() - file.ctime).days" # Get days as number
"(now() - file.ctime).hours" # Get hours as number
# Complex duration arithmetic
"now() + (duration('1d') * 2)"
String Functions
Field: string.length
Function
Signature
Description
contains()
string.contains(value): boolean
Check substring
containsAll()
string.containsAll(...values): boolean
All substrings present
containsAny()
string.containsAny(...values): boolean
Any substring present
startsWith()
string.startsWith(query): boolean
Starts with query
endsWith()
string.endsWith(query): boolean
Ends with query
isEmpty()
string.isEmpty(): boolean
Empty or not present
lower()
string.lower(): string
To lowercase
title()
string.title(): string
To Title Case
trim()
string.trim(): string
Remove whitespace
replace()
string.replace(pattern, replacement): string
Replace pattern
repeat()
string.repeat(count): string
Repeat string
reverse()
string.reverse(): string
Reverse string
slice()
string.slice(start, end?): string
Substring
split()
string.split(separator, n?): list
Split to list
Number Functions
Function
Signature
Description
abs()
number.abs(): number
Absolute value
ceil()
number.ceil(): number
Round up
floor()
number.floor(): number
Round down
round()
number.round(digits?): number
Round to digits
toFixed()
number.toFixed(precision): string
Fixed-point notation
isEmpty()
number.isEmpty(): boolean
Not present
List Functions
Field: list.length
Function
Signature
Description
contains()
list.contains(value): boolean
Element exists
containsAll()
list.containsAll(...values): boolean
All elements exist
containsAny()
list.containsAny(...values): boolean
Any element exists
filter()
list.filter(expression): list
Filter by condition (uses value, index)
map()
list.map(expression): list
Transform elements (uses value, index)
reduce()
list.reduce(expression, initial): any
Reduce to single value (uses value, index, acc)
flat()
list.flat(): list
Flatten nested lists
join()
list.join(separator): string
Join to string
reverse()
list.reverse(): list
Reverse order
slice()
list.slice(start, end?): list
Sublist
sort()
list.sort(): list
Sort ascending
unique()
list.unique(): list
Remove duplicates
isEmpty()
list.isEmpty(): boolean
No elements
File Functions
Function
Signature
Description
asLink()
file.asLink(display?): Link
Convert to link
hasLink()
file.hasLink(otherFile): boolean
Has link to file
hasTag()
file.hasTag(...tags): boolean
Has any of the tags
hasProperty()
file.hasProperty(name): boolean
Has property
inFolder()
file.inFolder(folder): boolean
In folder or subfolder
Link Functions
Function
Signature
Description
asFile()
link.asFile(): file
Get file object
linksTo()
link.linksTo(file): boolean
Links to file
Object Functions
Function
Signature
Description
isEmpty()
object.isEmpty(): boolean
No properties
keys()
object.keys(): list
List of keys
values()
object.values(): list
List of values
Regular Expression Functions
Function
Signature
Description
matches()
regexp.matches(string): boolean
Test if matches
2026 Galyarder Labs. Galyarder Framework.