/

Taxi StdLib

Reference documentation on functions provided in Taxi's StdLib packages


Taxi ships with a collections of functions for basic operations on data.

These operations are performed locally on data received from services - it does not instruct remote services to perform these changes.

Taxi does not provide implementations of these functions, that's left to runtimes, such as Orbital.

Strings

A collection of functions for manipulating strings

left

taxi.stdlib.left

declare extension function left(source:String,count:Int):String

Returns the left most characters from the source string

taxi.stdlib.right

declare extension function right(source:String,count:Int):String

mid

taxi.stdlib.mid

declare extension function mid(source: String,startIndex: Int,endIndex: Int):String

Returns the middle of a string, starting at the startIndex, and ending right before the endIndex.

  • startIndex - the start index (inclusive)
  • endIndex - the end index (exclusive)

concat

taxi.stdlib.concat

declare function concat(Any...):String

upperCase

taxi.stdlib.upperCase

declare extension function upperCase(String):String

lowerCase

taxi.stdlib.lowerCase

declare extension function lowerCase(String):String

trim

taxi.stdlib.trim

declare extension function trim(String):String

length

taxi.stdlib.length

declare extension function length(String):Int

indexOf

taxi.stdlib.indexOf

declare extension function indexOf(source:String, valueToSearchFor:String):Int

Returns the index of valueToSearchFor within source

replace

taxi.stdlib.replace

declare extension function replace(source: String, searchValue:String, replacement: String):String

Replaces the contents of the provided String, returning a new String Accepts three args:

  • source: String: The string to search
  • searchValue: String: The string to search for
  • replacement: String: The string to use as a replacement

containsString

taxi.stdlib.containsString

declare extension function containsString(source:String, valueToSearchFor:String):Boolean

Returns true if valueToSearchFor within source

Collections

A collection of functions for operating on collections

contains

taxi.stdlib.contains

declare extension function <T> contains(collection: T[], searchTarget:T): Boolean

allOf

taxi.stdlib.allOf

declare function allOf(values:Boolean...): Boolean

anyOf

taxi.stdlib.anyOf

declare function anyOf(values:Boolean...): Boolean

Returns true if any of the provided boolean values are true. See also: any()

noneOf

taxi.stdlib.noneOf

declare function noneOf(values:Boolean...): Boolean

Returns true if all of the provided boolean values are false. See also: none()

all

taxi.stdlib.all

declare extension function <T> all(collection: T[], predicate: (T) -> Boolean): Boolean

Returns true if all of the items in the collection satisfy the predicate

any

taxi.stdlib.any

declare extension function <T> any(collection: T[], predicate: (T) -> Boolean): Boolean

Returns true if any of the items in the collection satisfy the predicate

none

taxi.stdlib.none

declare extension function <T> none(collection: T[], predicate: (T) -> Boolean): Boolean

Returns true if none of the items in the collection satisfy the predicate

single

taxi.stdlib.single

declare extension function <T> single(collection:T[], callback: (T) -> Boolean):T

filter

taxi.stdlib.filter

declare extension function <T> filter(collection:T[], callback: (T) -> Boolean):T[]

filterEach

taxi.stdlib.filterEach

declare extension function <T> filterEach(item: T, callback: (T) -> Boolean):T?

Evaluates the predicate against the provided value, returning the value if the predicate returns true, or null. Intended for use against filtering streams, where null values are excluded

singleBy

taxi.stdlib.singleBy

declare extension function <T,A> singleBy(collection:T[], groupingFunction: (T) -> A, searchValue: A):T

Similar to Single, where the collection is searched for a single matching value. However, results are first grouped by selector. The results of this are cached to improve future performance

first

taxi.stdlib.first

declare extension function <T> first(collection: T[]):T

Returns the first item within the collection

exactlyOne

taxi.stdlib.exactlyOne

declare extension function <T> exactlyOne(collection:T[]):T

Returns the only item from the provided collection, or errors if there isn't exactly one item in the collection

last

taxi.stdlib.last

declare extension function <T> last(collection: T[]):T

Returns the last item within the collection

getAtIndex

taxi.stdlib.getAtIndex

declare extension function <T> getAtIndex(collection: T[], index: Int):T

Returns the item at the provided index

intersection

taxi.stdlib.intersection

declare extension function <T> intersection(collectionA: T[], collectionB: T[]):T[]

Returns a collection containing the items present in both the provided collections

listOf

taxi.stdlib.listOf

declare function <T> listOf(values:T...):T[]

xxx Returns an array containing the provided values

joinToString

taxi.stdlib.joinToString

declare extension function <T> joinToString(values:T[], separator: String = ",", prefix: String? = null, postfix: String? = null): String

Creates a string from all the elements separated using separator and using the given prefix and postfix if supplied. Null values are omitted

Dates

Mess about with time. Flux capacitor not included

addMinutes

taxi.stdlib.dates.addMinutes

declare function <T> addMinutes(T, Int):T

addDays

taxi.stdlib.dates.addDays

declare function <T> addDays(T, Int):T

addSeconds

taxi.stdlib.dates.addSeconds

declare function <T> addSeconds(T, Int):T

now

taxi.stdlib.dates.now

declare function now():Instant

currentDate

taxi.stdlib.dates.currentDate

declare function currentDate():Date

currentDateTime

taxi.stdlib.dates.currentDateTime

declare function currentDateTime():DateTime

currentTime

taxi.stdlib.dates.currentTime

declare function currentTime():Time

parseDate

taxi.stdlib.dates.parseDate

declare function <T> parseDate(String):T

Math

Numbers 'n' such. Maths for the brits.

round

taxi.stdlib.round

declare extension function round(value: Decimal, precision: Int = 0): Decimal

Rounds a decimal value to the specified precision.

sum

taxi.stdlib.sum

declare extension function <T,A> sum(collection: T[], callback: (T) -> A):A

max

taxi.stdlib.max

declare extension function <T,A> max(collection: T[], callback: (T) -> A):A

min

taxi.stdlib.min

declare extension function <T,A> min(collection: T[], callback: (T) -> A):A

Objects

Utilities for dealing with equality, etc

equals

taxi.stdlib.equals

declare extension function <A,B> equals(a:A, b:B): Boolean

Enums

Utilities for enums

enumForName

taxi.stdlib.enumForName

declare extension function <T> enumForName(enumType: lang.taxi.Type<T>, enumName: String): T

Returns the enum value for the provided name

hasEnumNamed

taxi.stdlib.hasEnumNamed

declare extension function <T> hasEnumNamed(enumType: lang.taxi.Type<T>, enumName: String): Boolean

Indicates if the enum contains an entry for the provided key.

Ignores default entries, so an enum with a default will return false to enumContains() if the key isn't explicitly defined.

Aggregations

Functions for aggregating data within transformations.

sumOver

vyne.aggregations.sumOver

declare query function sumOver(Any...):Decimal

Functional

Functions that are functionally functions. Funky

reduce

taxi.stdlib.reduce

declare extension function <T,A> reduce(collection: T[], callback: (T,A) -> A):A

fold

taxi.stdlib.fold

declare extension function <T,A> fold(collection: T[], initial: A, callback: (T,A) -> A):A

Iterates over a collection, combining elements to produce a single accumulated result.

Example:

// Given:
model Entry {
   weight:Weight inherits Int
   score:Score inherits Int
}

type WeightedAverage by (Entry[]) -> Entry[].fold(0, (Entry, Int) -> Int + (Weight*Score))

map

taxi.stdlib.map

declare extension function <T,A> map(collection: T[], callback: (T) -> A):A[]

Performs a mapping transformation function on every member of the provided array.

If the callback is in the form of a type expression, then each input value is converted into an instance of that type.

For example:

// Will convert Person[] to Person2[]
Person[].map((Person) -> Person2)

If the callback is in the form of any other type of expression, then that expression is evaluated against each member of the input array.

For example:

// Will return an array of Title, where the text has been converted to uppercase
Film[].map ( (Title) -> Title.upperCase() )

Transformations

Functions for converting between types

convert

taxi.stdlib.convert

declare extension function <T> convert(source: Any, targetType: lang.taxi.Type<T>): T

Converts the provided source into the target type reference. Conversions are performed locally, using only the data provided in source - ie., no services or graph searches are performed.

This method is less powerful than using a standard projection (eg., A as B), because:

  • Only the exact facts passed in the source are considered

  • No graph searches or remote invocations are performed

    As a result, it's also more performant.

toRawType

taxi.stdlib.toRawType

declare extension function toRawType(source: Any):Any

Removes the semantic typing from the provided scalar value, returning a scalar value typed with the raw primitive type.

This can be useful if trying to compare values ignoring their type.

  • If called with an Array, will remove semantic types of all members. The array should only contain scalar values.
  • If called with a scalar value, will remove the semantic type of the value

Not supported for calling on an object (or array of objects), as Taxi's type system is structural, and needs to know the structure of the type it's operating on.

Errors

Functions for creating and handling errors

throw

taxi.stdlib.throw

declare function throw(error:Any):Nothing
Edit on Github