# Library Reference
## Global functions
Function | Description
--------------------------------|-----------------------
regex(pattern, text) | Returns true if the regex pattern matches the text, false otherwise.
match(pattern, text) | Returns true if the wildcard pattern matches the text, false otherwise.
len(value) | Returns the length of the value, i.e. the number of elements for an array or dictionary, or the length of the string in bytes.
union(array, array, ...) | Returns an array containing all unique elements from the specified arrays.
intersection(array, array, ...) | Returns an array containing all unique elements which are common to all specified arrays.
keys(dict) | Returns an array containing the dictionary's keys.
string(value) | Converts the value to a string.
number(value) | Converts the value to a number.
bool(value) | Converts the value to a bool.
random() | Returns a random value between 0 and RAND_MAX (as defined in stdlib.h).
log(value) | Writes a message to the log. Non-string values are converted to a JSON string.
log(severity, facility, value) | Writes a message to the log. `severity` can be one of `LogDebug`, `LogNotice`, `LogInformation`, `LogWarning`, and `LogCritical`. Non-string values are converted to a JSON string.
typeof(value) | Returns the type object for a value.
exit(integer) | Terminates the application.
## Math object
The global `Math` object can be used to access a number of mathematical constants
and functions.
### Math.E
Euler's constant.
### Math.LN2
Natural logarithm of 2.
### Math.LN10
Natural logarithm of 10.
### Math.LOG2E
Base 2 logarithm of E.
### Math.PI
The mathematical constant Pi.
### Math.SQRT1_2
Square root of 1/2.
### Math.SQRT2
Square root of 2.
### Math.abs
Signature:
function abs(x);
Returns the absolute value of `x`.
### Math.acos
Signature:
function acos(x);
Returns the arccosine of `x`.
### Math.asin
Signature:
function asin(x);
Returns the arcsine of `x`.
### Math.atan
Signature:
function atan(x);
Returns the arctangent of `x`.
### Math.atan2
Signature:
function atan2(y, x);
Returns the arctangent of the quotient of `y` and `x`.
### Math.ceil
Signature:
function ceil(x);
Returns the smallest integer value not less than `x`.
### Math.cos
Signature:
function cos(x);
Returns the cosine of `x`.
### Math.exp
Signature:
function exp(x);
Returns E raised to the `x`th power.
### Math.floor
Signature:
function floor(x);
Returns the largest integer value not greater than `x`.
### Math.isinf
Signature:
function isinf(x);
Returns whether `x` is infinite.
### Math.isnan
Signature:
function isnan(x);
Returns whether `x` is NaN (not-a-number).
### Math.log
Signature:
function log(x);
Returns the natural logarithm of `x`.
### Math.max
Signature:
function max(...);
Returns the largest argument. A variable number of arguments can be specified.
If no arguments are given -Infinity is returned.
### Math.min
Signature:
function min(...);
Returns the smallest argument. A variable number of arguments can be specified.
If no arguments are given +Infinity is returned.
### Math.pow
Signature:
function pow(x, y);
Returns `x` raised to the `y`th power.
### Math.random
Signature:
function random();
Returns a pseudo-random number between 0 and 1.
### Math.round
Signature:
function round(x);
Returns `x` rounded to the nearest integer value.
### Math.sign
Signature:
function sign(x);
Returns -1 if `x` is negative, 1 if `x` is positive
and 0 if `x` is 0.
### Math.sin
Signature:
function sin(x);
Returns the sine of `x`.
### Math.sqrt
Signature:
function sqrt(x);
Returns the square root of `x`.
### Math.tan
Signature:
function tan(x);
Returns the tangent of `x`.
## Number type
### Number#to_string
Signature:
function to_string();
The `to_string` method returns a string representation of the number.
Example:
var example = 7
example.to_string() /* Returns "7" */
## Boolean type
### Boolean#to_string
Signature:
function to_string();
The `to_string` method returns a string representation of the boolean value.
Example:
var example = true
example.to_string() /* Returns "true" */
## String type
### String#find
Signature:
function find(str, start);
Returns the zero-based index at which the string `str` was found in the string. If the string
was not found -1 is returned. `start` specifies the zero-based index at which `find` should
start looking for the string (defaults to 0 when not specified).
Example:
"Hello World".find("World") /* Returns 6 */
### String#len
Signature
function len();
Returns the length of the string in bytes. Note that depending on the encoding type of the string
this is not necessarily the number of characters.
Example:
"Hello World".len() /* Returns 11 */
### String#lower
Signature:
function lower();
Returns a copy of the string with all of its characters converted to lower-case.
Example:
"Hello World".lower() /* Returns "hello world" */
### String#upper
Signature:
function upper();
Returns a copy of the string with all of its characters converted to upper-case.
Example:
"Hello World".upper() /* Returns "HELLO WORLD" */
### String#replace
Signature:
function replace(search, replacement);
Returns a copy of the string with all occurences of the string specified in `search` replaced
with the string specified in `replacement`.
### String#split
Signature:
function split(delimiters);
Splits a string into individual parts and returns them as an array. The `delimiters` argument
specifies the characters which should be used as delimiters between parts.
Example:
"x-7,y".split("-,") /* Returns [ "x", "7", "y" ] */
### String#substr
Signature:
function substr(start, len);
Returns a part of a string. The `start` argument specifies the zero-based index at which the part begins.
The optional `len` argument specifies the length of the part ("until the end of the string" if omitted).
Example:
"Hello World".substr(6) /* Returns "World" */
### String#to_string
Signature:
function to_string();
Returns a copy of the string.
## Array type
### Array#add
Signature:
function add(value);
Adds a new value after the last element in the array.
### Array#clear
Signature:
function clear();
Removes all elements from the array.
### Array#clone
function clone();
Returns a copy of the array. Note that for elements which are reference values (e.g. objects such
as arrays and dictionaries) only the references are copied.
### Array#contains
Signature:
function contains(value);
Returns true if the array contains the specified value, false otherwise.
### Array#len
Signature:
function len();
Returns the number of elements contained in the array.
### Array#remove
Signature:
function remove(index);
Removes the element at the specified zero-based index.
### Array#set
Signature:
function set(index, value);
Sets the element at the zero-based index to the specified value. The `index` must refer to an element
which already exists in the array.
### Array#sort
Signature:
function sort(less_cmp);
Returns a copy of the array where all items are sorted. The items are
compared using the `<` (less-than) operator. A custom comparator function
can be specified with the `less_cmp` argument.
### Array#join
Signature:
function join(separator);
Joins all elements of the array using the specified separator.
## Dictionary type
### Dictionary#clone
Signature:
function clone();
Returns a copy of the dictionary. Note that for elements which are reference values (e.g. objects such
as arrays and dictionaries) only the references are copied.
### Dictionary#contains
Signature:
function contains(key);
Returns true if a dictionary item with the specified `key` exists, false otherwise.
### Dictionary#len
Signature:
function len();
Returns the number of items contained in the dictionary.
### Dictionary#remove
Signature:
function remove(key);
Removes the item with the specified `key`. Trying to remove an item which does not exist
is a no-op.
### Dictionary#set
Signature:
function set(key, value);
Creates or updates an item with the specified `key` and `value`.
## Function type
### Function#call
Signature:
function call(thisArg, ...);
Invokes the function using an alternative `this` scope. The `thisArg` argument specifies the `this`
scope for the function. All other arguments are passed directly to the function.
Example:
function set_x(val) {
this.x = val
}
dict = {}
set_x.call(dict, 7) /* Invokes set_x using `dict` as `this` */
### Function#callv
Signature:
function callv(thisArg, args);
Invokes the function using an alternative `this` scope. The `thisArg` argument specifies the `this`
scope for the function. The items in the `args` array are passed to the function as individual arguments.
Example:
function set_x(val) {
this.x = val
}
var dict = {}
var args = [ 7 ]
set_x.callv(dict, args) /* Invokes set_x using `dict` as `this` */