Skip to main content

Methods reference

Every built-in chainable method, grouped by the value type it applies to. A method is matched to the runtime type of the value on its left. Argument defaults are shown in the signatures.

You can add your own with registerMethod().


String methods

Case and formatting

MethodResult
upper()Uppercase
lower()Lowercase
camel()camelCase
snake()snake_case
kebab()kebab-case
studly()StudlyCase
title()Title Case
slug(separator = "-")URL slug
reverse()Characters reversed

Trimming and padding

MethodResult
trim(chars = whitespace)Trim both ends
ltrim(chars = whitespace)Trim start
rtrim(chars = whitespace)Trim end
pad(length = 0, pad = " ")Pad to length
start(prefix = "")Ensure it begins with prefix (added once)
finish(suffix = "")Ensure it ends with suffix (added once)
wrap(before = "", after = before)Wrap with before / after

Slicing and searching

MethodResult
length() / count()Byte length
words()Word count
limit(limit = 100, end = "...")Truncate, appending end
substr(start = 0, length = null)Substring
before(search)Everything before the first search
after(search)Everything after the first search
indexOf(search)Position of search, or false
contains(search)true if search occurs
startsWith(search)Boolean
endsWith(search)Boolean

Transforming

MethodResult
replace(search, replace)Replace all occurrences
repeat(times = 1)Repeat the string
concat(append = "")Append append
split(delimiter = ",")Split into an array

To turn a string into a date, use the date() functiondate(trigger.dueDate) — not a string method. See Working with dates.


Array methods

Reading

MethodResult
count() / length()Number of elements
first()First value, or null
last()Last value, or null
nth(index = 0)Element at index, or null
keys()The array's keys
values()The array's values, re-indexed
pluck(key)Column key from a list of records

Aggregating

MethodResult
sum()Sum of elements
min()Smallest element
max()Largest element
avg()Mean, or null if empty
contains(needle = null)true if needle is present
join(glue = ", ")Join into a string
groupBy(key)Bucket a list of records into { value: [records] }

Reshaping (all re-index the result)

MethodResult
reverse()Reversed order
unique()Duplicates removed
flatten()Fully flattened (all levels)
skip(n = 0)Drop the first n
take(n = 0)Keep the first n
chunk(n = 1)Split into groups of n
diff(other = [])Elements not in other
intersect(other = [])Elements also in other

diff() / intersect() accept an array or a single scalar as other.

Per-item operations

MethodResult
filter(predicate)Items where predicate is truthy
map(transform)Each item replaced by transform
sort(by = null)Sorted; by is a per-item sort key
any(predicate)true if predicate holds for any item
every(predicate) / all(predicate)true if it holds for every item

These use the current keyword — see List operations.


Number methods

Available on integers and floats.

MethodResult
abs()Absolute value
ceil()Round up to an integer
floor()Round down to an integer
round(places = 0)Round to places decimals
clamp(min, max)Constrain to the range [min, max]
format(decimals = 2, decimalPoint = ".", thousands = ",")Formatted string
add(n = 0)value + n
sub(n = 0)value - n
mul(n = 1)value * n
div(n)value / n — throws on n = 0
mod(n)value % n (float-safe) — throws on n = 0
pow(n = 1)value ** n

div() and mod() by zero throw a native DivisionByZeroError (the / and % operators throw EvaluatorException instead).


Date methods

Available on the chainable date object produced by the date(), now(), or today() functions. Every method returns a new date (dates are immutable).

Arithmetic

addSeconds(n = 1), addMinutes, addHours, addDays, addWeeks, addMonths, addYears — and the matching subSeconds(n = 1)subYears.

Boundaries

startOfDay(), startOfWeek(), startOfMonth(), startOfYear() — and the matching endOfDay()endOfYear().

Comparison

MethodResult
isBefore(other)Boolean
isAfter(other)Boolean
isSame(other, unit = "day")Boolean, compared at unit granularity
diffInSeconds(other)Absolute whole-number difference
diffInMinutes / diffInHours / diffInDays / diffInWeeks / diffInMonths / diffInYearsAs above, in that unit

other may be another date object or a date string (parsed automatically). diffIn* results are always positive magnitudes.

Output and components

MethodResult
format(format = "Y-m-d H:i:s")Formatted string
timestamp()Unix timestamp
day() / month() / year()Integer components
hour() / minute() / second()Integer components
dayOfWeek()Integer (0–6)
dayName()e.g. "Monday"

Any-value methods

Registered for any, so they work on every value regardless of type. A type-specific method of the same name takes precedence.

MethodResult
default(fallback = null)The value, or fallback if it is null
in(...candidates)true if the value equals one of candidates

Type casts and guards — string(), int(), float(), bool(), json(), decode(), isset(), empty(), not(), if() — are functions, not methods. Call them as isset(trigger.name), not trigger.name.isset().

in() accepts either a list of arguments or a single array:

trigger.status.in("open", "pending")
trigger.status.in(trigger.allowedStatuses)