Built-in functions
Complete reference for GameBus expression language built-in functions.
Math functions
abs
Returns the absolute value.
abs(-5) // 5
abs(5) // 5floor
Rounds down to the nearest integer.
floor(4.9) // 4
floor(-4.1) // -5ceil
Rounds up to the nearest integer.
ceil(4.1) // 5
ceil(-4.9) // -4round
Rounds to the nearest integer or decimal places.
round(4.5) // 5
round(4.4) // 4
round(4.567, 2) // 4.57trunc
Truncates toward zero.
trunc(4.9) // 4
trunc(-4.9) // -4min
Returns the minimum value from an array.
min([5, 2, 8, 1]) // 1max
Returns the maximum value from an array.
max([5, 2, 8, 1]) // 8sum
Returns the sum of array values.
sum([1, 2, 3, 4, 5]) // 15avg
Returns the average of array values.
avg([10, 20, 30]) // 20median
Returns the median of array values.
median([1, 2, 3, 4, 5]) // 3mode
Returns the most frequent value.
mode([1, 2, 2, 3, 3, 3]) // 3rand
Returns a random number between 0 and the specified maximum.
rand(100) // Random number 0-100String functions
len
Returns the length of a string or array.
len("hello") // 5
len([1, 2, 3]) // 3upper
Converts to uppercase.
upper("hello") // "HELLO"lower
Converts to lowercase.
lower("HELLO") // "hello"trim
Removes leading and trailing whitespace.
trim(" hello ") // "hello"contains
Checks if a string contains a substring, or array contains a value.
contains("hello world", "world") // true
contains([1, 2, 3], 2) // truestartsWith
Checks if a string starts with a prefix.
startsWith("hello", "he") // true
startsWith("hello", "lo") // falseendsWith
Checks if a string ends with a suffix.
endsWith("hello", "lo") // true
endsWith("hello", "he") // falsematches
Tests a string against a regular expression.
matches("hello123", "[a-z]+[0-9]+") // true
matches("123-456-7890", "[0-9]{3}-[0-9]{3}-[0-9]{4}") // trueextract
Extracts groups from a regular expression match.
extract("2024-01-15", "(\d{4})-(\d{2})-(\d{2})")
// ["2024-01-15", "2024", "01", "15"]split
Splits a string by delimiter.
split("a,b,c", ",") // ["a", "b", "c"]fuzzyMatch
Returns a similarity score (0-1) between strings.
fuzzyMatch("hello", "hello") // 1
fuzzyMatch("hello", "helo") // 0.8Array functions
These functions iterate over arrays. Use # for the current element, or as for a named alias:
map(items, #.price) // using #
map(items as item, item.price) // using alias
filter(users as user, user.isActive) // more readablemap
Transforms each element.
map([1, 2, 3], # * 2) // [2, 4, 6]
map(items, #.price) // [prices...]
map(users as u, { name: u.name, age: u.age })filter
Keeps elements matching a condition.
filter([1, 2, 3, 4, 5], # > 3) // [4, 5]
filter(items as item, item.price < 100)some
Returns true if any element matches.
some([1, 2, 3], # > 2) // true
some(items, #.outOfStock) // true if any out of stockall
Returns true if all elements match.
all([1, 2, 3], # > 0) // true
all(items, #.verified) // true if all verifiedone
Returns true if exactly one element matches.
one([1, 2, 3], # == 2) // true
one([1, 2, 2], # == 2) // falsenone
Returns true if no elements match.
none([1, 2, 3], # > 10) // truecount
Counts elements matching a condition.
count([1, 2, 2, 3, 3, 3], # == 3) // 3flatMap
Maps and flattens results.
flatMap([[1, 2], [3, 4]], #) // [1, 2, 3, 4]keys
Returns object keys or array indices.
keys({ a: 1, b: 2 }) // ["a", "b"]
keys([10, 20, 30]) // [0, 1, 2]values
Returns object values.
values({ a: 1, b: 2 }) // [1, 2]merge
Combines an array of arrays or an array of objects into a single result.
Arrays — concatenates all arrays into one:
merge([[1, 2], [3, 4], [5]]) // [1, 2, 3, 4, 5]Objects — combines all objects, last value wins for duplicate keys:
merge([{a: 1}, {b: 2}, {c: 3}]) // {a: 1, b: 2, c: 3}
merge([{a: 1, b: 2}, {b: 3, c: 4}]) // {a: 1, b: 3, c: 4}mergeDeep
Recursively merges an array of objects. Unlike merge, nested objects are combined rather than replaced, and nested arrays are concatenated.
Nested objects — recursively merged:
mergeDeep([{a: {x: 1}}, {a: {y: 2}}]) // {a: {x: 1, y: 2}}
mergeDeep([{a: {b: {c: 1}}}, {a: {b: {d: 2}}}]) // {a: {b: {c: 1, d: 2}}}Nested arrays — concatenated:
mergeDeep([{tags: [1, 2]}, {tags: [3, 4]}]) // {tags: [1, 2, 3, 4]}Scalar values — last value wins:
mergeDeep([{a: 1}, {a: 2}]) // {a: 2}Date functions
d
Creates a date object. See Date operations for full documentation.
d("2024-01-15") // Date object
d("2024-01-15", "America/New_York") // With timezone
d() // Current date/timeduration
Parses a duration string to seconds.
duration("1h 30m") // 5400
duration("7d") // 604800Type functions
string
Converts to string.
string(123) // "123"
string(true) // "true"number
Converts to number.
number("123") // 123
number("12.5") // 12.5
number(true) // 1
number(false) // 0bool
Converts to boolean.
bool(1) // true
bool(0) // false
bool("true") // truetype
Returns the type as a string.
type("hello") // "string"
type(123) // "number"
type(true) // "bool"
type([1, 2]) // "array"
type({a: 1}) // "object"
type(null) // "null"isNumeric
Checks if a value is numeric or can be converted to a number.
isNumeric(123) // true
isNumeric("123") // true
isNumeric("hello") // false