Files
vault/.claude/skills/obsidian-bases/references/FUNCTIONS_REFERENCE.md

7.4 KiB

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
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