Expressions Glossary

Thays Oliveira Updated by Thays Oliveira

Overview

Expressions are formulas used on the platform, very similar to formulas used in spreadsheet programs, such as Microsoft Excel, although they have evolved over time and the similarities are much smaller now. It is an expression-based modeling language that aims to facilitate the generation of text from a context of values.

In this article we will deal with a little about:

Models

Expressions can be called using the following model: @(...)

For example, the model Hi @("Dr" & upper (foo)) takes the value of the variable @foo, converts it to uppercase and prefixes it with another word. Note that inside a complex expression you don't have to put @ before all variables.

Types

We have the following types of expressions accepted on the platform:

Array: used to create an array of items:

@(array(1, "x", true)) → [1, x, true]
@(array(1, "x", true)[1]) → x
@(count(array(1, "x", true))) → 3
@(json(array(1, "x", true))) → [1,"x",true]

Boolean: is a true or false Boolean

@(true) → true
@(1 = 1) → true
@(1 = 2) → false
@(json(true)) → true

Date: is a date value on the Gregorian calendar

@(date_from_parts(2019, 4, 11)) → 2019-04-11@(format_date(date_from_parts(2019, 4, 11))) → 11-04-2019@(json(date_from_parts(2019, 4, 11))) → "2019-04-11"

Date and Time: is a date and time value

@(datetime("1979-07-18T10:30:45.123456Z")) → 1979-07-18T10:30:45.123456Z
@(format_datetime(datetime("1979-07-18T10:30:45.123456Z"))) → 18-07-1979 05:30@(json(datetime("1979-07-18T10:30:45.123456Z"))) → "1979-07-18T10:30:45.123456Z"

Function: it is a function that can be called

@(upper) → function
@(array(upper)[0]("abc")) → ABC
@(json(upper)) → null

Number: is an integer or fractional number

@(1234) → 1234
@(1234.5678) → 1234.5678
@(format_number(1234.5670)) → 1,234.567
@(json(1234.5678)) → 1234.5678

Object: is an object with named properties

@(object("foo", 1, "bar", "x")) → {bar: x, foo: 1}
@(object("foo", 1, "bar", "x").bar) → x
@(object("foo", 1, "bar", "x")["bar"]) → x
@(count(object("foo", 1, "bar", "x"))) → 2
@(json(object("foo", 1, "bar", "x"))) → {"bar":"x","foo":1}

Text: is a sequence of characters

@("abc") → abc
@(text_length("abc")) → 3
@(upper("abc")) → ABC
@(json("abc")) → "abc"

Time: it's a time of the day

@(time_from_parts(16, 30, 45)) → 16:30:45.000000@(format_time(time_from_parts(16, 30, 45))) → 16:30@(json(time_from_parts(16, 30, 45))) → "16:30:45.000000"

Operators

Below is a list of all operators that can be used to build expressions on the platform:

+ : add two numbers

@(2 + 3) → 5
@(fields.age + 10) → 33

& : join two text values

@("hello" & " " & "bar") → hello bar
@("hello" & null) → hello

/ : divide one number by another

@(4 / 2) → 2@(3 / 2) → 1.5
@(46 / fields.age) → 2
@(3 / 0) → ERROR

= : returns "true" if two values are verbally equal

@("hello" = "hello") → true
@("hello" = "bar") → false
@(1 = 1) → true

^ : a number to the power of another

@(2 ^ 8) → 256

> : returns "true" if the first number is greater than the second

@(2 > 3) → false@(3 > 3) → false@(4 > 3) → true

>= : returns "true" if the first number is greater than or equal to the second

@(2 >= 3) → false
@(3 >= 3) → true
@(4 >= 3) → true

< : returns "true" if the first number is less than the second

@(2 < 3) → true
@(3 < 3) → false
@(4 < 3) → false

<= : returns "true" if the first number is less than or equal to the second

@(2 <= 3) → true
@(3 <= 3) → true
@(4 <= 3) → false

* : multiplies two numbers

@(3 * 2) → 6
@(fields.age * 3) → 69

- (unary) : negates a number

@(-fields.age) → -23

! : returns "true" if two values are not verbally equal

@("hello" != "hello") → false
@("hello" != "bar") → true
@(1 != 2) → true

- (binary) : subtracts two numbers

@(3 - 2) → 1
@(2 - 3) → -1

Functions

Expressions have access to a set of built-in functions that can be used to perform more complex tasks. Functions are called using the @(function_name (args ..)) syntax and can take literal values @(length (split ("1 2 3", "")) or variables in the context @(title (contact.name) ).

abs(number): returns the absolute value of number.

@(abs(-10)) → 10
@(abs(10.5)) → 10.5
@(abs("foo")) → ERROR

and(values...): returns if all the statements values are true.

@(and(true)) → true
@(and(true, false, true)) → false

array(values...): takes many values and returns them as a array.

@(array("a", "b", 356)[1]) → b
@(join(array("a", "b", "c"), "|")) → a|b|c
@(count(array())) → 0
@(count(array("a", "b"))) → 2

attachment_parts(attachment): analyzes an attachment in its different parts

@(attachment_parts("image/jpeg:https://example.com/test.jpg")) → {content_type: image/jpeg, url: https://example.com/test.jpg}

boolean(value): tries to convert value to a boolean. An error will be returned if the value cannot be converted.

@(boolean(array(1, 2))) → true
@(boolean("FALSE")) → false
@(boolean(1 / 0)) → ERROR

char(code): returns the character for the provided UNICODE code. It is the reverse of code.

@(char(33)) → !
@(char(128512)) → 😀
@(char("foo")) → ERROR

clean(text): removes all unprintable characters from text.

@(clean("😃 Hello \nwo\tr\rld")) → 😃 Hello world
@(clean(123)) → 123

code(text): returns the UNICODE code for the first character of text. It is the reverse of char.

@(code("a")) → 97
@(code("abc")) → 97
@(code("😀")) → 128512
@(code("15")) → 49
@(code(15)) → 49
@(code("")) → ERROR

count(value): returns the number of items in the array or properties specified in an object. It will return an error if an item that is not countable is passed.

@(count(contact.fields)) → 5
@(count(array())) → 0
@(count(array("a", "b", "c"))) → 3
@(count(1234)) → ERROR

date(value): tries to convert value to a date. If it is text, it will be parsed on a date using the standard date format. An error will be returned if the value cannot be converted.

@(date("1979-07-18")) → 1979-07-18
@(date("1979-07-18T10:30:45.123456Z")) → 1979-07-18@(date("10/05/2010")) → 2010-05-10
@(date("NOT DATE")) → ERROR

date_from_parts(year, month, day): creates a date with yearmonthday.

@(date_from_parts(2017, 1, 15)) → 2017-01-15
@(date_from_parts(2017, 2, 31)) → 2017-03-03
@(date_from_parts(2017, 13, 15)) → ERROR

datetime(value): tries to convert value to a datetime. If it is text, it will be parsed on a date and time using the standard date and time formats. An error will be returned if the value cannot be converted.

@(datetime("1979-07-18")) → 1979-07-18T00:00:00.000000-05:00@(datetime("1979-07-18T10:30:45.123456Z")) → 1979-07-18T10:30:45.123456Z
@(datetime("10/05/2010")) → 2010-05-10T00:00:00.000000-05:00
@(datetime("NOT DATE")) → ERROR

datetime_ad(datetime, offset, unit): Calculates the value of the date reached by adding the offsetnumber of the datetime unit. Valid durations are "Y" for years, "M" for months, "W" for weeks, "D" for days, "h" for hours, "m" for minutes and "s" for seconds.

@(datetime_add("2017-01-15", 5, "D")) → 2017-01-20T00:00:00.000000-05:00
@(datetime_add("2017-01-15 10:45", 30, "m")) → 2017-01-15T11:15:00.000000-05:00

datetime_diff(date1date2unit): returns the duration between date1 and date2 in the unitespecified. Valid durations are "Y" for years, "M" for months, "W" for weeks, "D" for days, "h" for hours, "m" for minutes and "s" for seconds.

@(datetime_diff("2017-01-15", "2017-01-17", "D")) → 2@(datetime_diff("2017-01-15", "2017-05-15", "W")) → 17@(datetime_diff("2017-01-15", "2017-05-15", "M")) → 4
@(datetime_diff("2017-01-17 10:50", "2017-01-17 12:30", "h")) → 1@(datetime_diff("2017-01-17", "2015-12-17", "Y")) → -2

datetime_from_epoch(segundos): converte o horário da época UNIX secondsem uma nova data.

@(datetime_from_epoch(1497286619)) → 2017-06-12T11:56:59.000000-05:00@(datetime_from_epoch(1497286619.123456)) → 2017-06-12T11:56:59.123456-05:00

default(valor, padrão): retorna valuese não estiver vazio ou com erro, caso contrário ele retornarádefault.

@(default(undeclared.var, "default_value")) → default_value@(default("10", "20")) → 10
@(default("", "value")) → value
@(default(" ", "value")) → \x20\x20
@(default(datetime("invalid-date"), "today")) → today@(default(format_urn("invalid-urn"), "ok")) → ok

epoch(data): converte dateem um horário de época UNIX. O número retornado pode conter segundos fracionários.

@(epoch("2017-06-12T16:56:59.000000Z")) → 1497286619
@(epoch("2017-06-12T18:56:59.000000+02:00")) → 1497286619@(epoch("2017-06-12T16:56:59.123456Z")) → 1497286619.123456@(round_down(epoch("2017-06-12T16:56:59.123456Z"))) → 1497286619

extract(objeto, propriedades): pega um objeto e extrai a propriedade nomeada.

@(extract(contact, "name")) → Ryan Lewis
@(extract(contact.groups[0], "name")) → Testers

extract_object(objeto, propriedades...): pega um objeto e retorna um novo objeto extraindo apenas as propriedades nomeadas.

@(extract_object(contact.groups[0], "name")) → {name: Testers}

field(texto, índice, delimitador): divide textusando o dadodelimitere retorna o campo index. O índice começa em zero. Ao dividir com um espaço, o delimitador é considerado como todo o espaço em branco.

@(field("a,b,c", 1, ",")) → b
@(field("a,,b,c", 1, ",")) →
@(field("a b c", 1, " ")) → b
@(field("a b c d", 1, " ")) →
@(field("a\t\tb\tc\td", 1, " ")) →
@(field("a,b,c", "foo", ",")) → ERROR

foreach(valores, func, [argumentos...]): cria uma nova matriz aplicando funca cada valor emvalues. Se a função fornecida receber mais de um argumento, você poderá passar argumentos adicionais após a função.

@(foreach(array("a", "b", "c"), upper)) → [A, B, C]@(foreach(array("the man", "fox", "jumped up"), word, 0)) → [the, fox, jumped]

foreach_value(objeto, func, [args...]): cria um novo objeto aplicando funca cada valor de propridade object. Se a função fornecida receber mais de um argumento, você poderá passar argumentos adicionais após a função.

@(foreach_value(object("a", "x", "b", "y"), upper)) → {a: X, b: Y}@(foreach_value(object("a", "hi there", "b", "good bye"), word, 1)) → {a: there, b: bye}

format(valor): formatos de valuede acordo com seu tipo.

@(format(1234.5670)) → 1,234.567
@(format(now())) → 11-04-2018 13:24
@(format(today())) → 11-04-2018

format_date(data, [, formato]): formatadatecomo texto de acordo com o dadoformat. Seformatnão for especificado, o formato padrão do ambiente será usado. A cadeia de formato pode consistir nos seguintes caractere. Os caracteres '', ':', ',', 'T', '-' e '_' são ignorados. Qualquer outro caractere é um erro.

  • YY- últimos dois dígitos do ano 0-99
  • YYYY- quatro dígitos do ano 0000-9999
  • M- mês 1-12
  • MM- mês 01-12
  • D- dia do mês 1-31
  • DD- dia do mês, zero preenchido 01-31
@(format_date("1979-07-18T15:00:00.000000Z")) → 18-07-1979@(format_date("1979-07-18T15:00:00.000000Z", "YYYY-MM-DD")) → 1979-07-18@(format_date("2010-05-10T19:50:00.000000Z", "YYYY M DD")) → 2010 5 10@(format_date("1979-07-18T15:00:00.000000Z", "YYYY")) → 1979
@(format_date("1979-07-18T15:00:00.000000Z", "M")) → 7
@(format_date("NOT DATE", "YYYY-MM-DD")) → ERROR

format_datetime (data e hora [, formato [, fuso horário]])

Formata datetime como texto de acordo com o dado format. Se formatnão for especificado, o formato padrão do ambiente será usado. A cadeia de contato pode consistir nos seguintes caracteres. Os caracteres '', ':', ',', 'T', '-' e '_' são ignorados. Qualquer outro caractere é um erro.

  • YY- últimos dois dígitos do ano 0-99
  • YYYY- quatro dígitos do ano 0000-9999
  • M- mês 1-12
  • MM- mês 01-12
  • D- dia do mês 1-31
  • DD- dia do mês, zero preenchido 01-31
  • h- hora do dia 1-12
  • hh- hora do dia 01-12
  • tt- vinte de quatro horas do dia 00-23
  • m- minuto 0-59
  • mm- minuto 00-59
  • s- segundo 0-59
  • ss- segundo 00-59
  • fff- milissegundos
  • ffffff- microssegundos
  • fffffffff- nanosegundos
  • aa- AM ou PM
  • AA- AM ou PM
  • Z- deslocamento de hora e minuto do UTC ou Z do UTC
  • ZZZ- deslocamento de hora e minuto do UTC

O fuso horário deve ser o nome de local, conforme especificado no bando de dados do fuso horário da IANA, como ""America / Guayaquil" ou "America / Los_Angeles". Se não especificado, o fuso horário atual será usado. Um erro será retornado se o fuso horário não for reconhecido.

@(format_datetime("1979-07-18T15:00:00.000000Z")) → 18-07-1979 10:00@(format_datetime("1979-07-18T15:00:00.000000Z", "YYYY-MM-DD")) → 1979-07-18
@(format_datetime("2010-05-10T19:50:00.000000Z", "YYYY M DD tt:mm")) → 2010 5 10 14:50
@(format_datetime("2010-05-10T19:50:00.000000Z", "YYYY-MM-DD hh:mm AA", "America/Los_Angeles")) → 2010-05-10 12:50 PM
@(format_datetime("1979-07-18T15:00:00.000000Z", "YYYY")) → 1979@(format_datetime("1979-07-18T15:00:00.000000Z", "M")) → 7
@(format_datetime("NOT DATE", "YYYY-MM-DD")) → ERROR

format_location(local): formata o dadolocationcomo seu nome.

@(format_location("Rwanda")) → Rwanda
@(format_location("Rwanda > Kigali")) → Kigali

format_number(número, lugares [, humanizar]): formata numbero número decimal especificado places. Um terceiro argumento opcional humanizepode ser falso para desativar o uso de mil separadores.

@(format_number(1234)) → 1,234@(format_number(1234.5670)) → 1,234.567@(format_number(1234.5670, 2, true)) → 1,234.57@(format_number(1234.5678, 0, false)) → 1235@(format_number("foo", 2, false)) → ERROR

format_time (hora, [, formato]): formata timecomo texto de acordo com o dato format

. Se formatnão for especificado, o formato padrão do ambiente será usado. A cadeia de formato pode consistir nos seguintes caracteres. Os caracteres '', ':', ',', 'T', '-' e '_' são ignorados. Qualquer outro caractere é um erro.

  • h- hora do dia 1-12
  • hh- hora do dia 01-12
  • tt- vinte de quatro horas do dia 00-23
  • m- minuto 0-59
  • mm- minuto 00-59
  • s- segundo 0-59
  • ss- segundo 00-59
  • fff- milissegundos
  • ffffff- microssegundos
  • fffffffff- nanosegundos
  • aa- AM ou PM
  • AA- AM ou PM
@(format_time("14:50:30.000000")) → 14:50@(format_time("14:50:30.000000", "h:mm aa")) → 2:50 pm@(format_time("15:00:27.000000", "s")) → 27
@(format_time("NOT TIME", "hh:mm")) → ERROR

format_urn(urn): formataurnem texto amigável para humanos.

@(format_urn("tel:+250781234567")) → 0781 234 567@(format_urn("twitter:134252511151#billy_bob")) → billy_bob@(format_urn(contact.urn)) → (202) 456-1111
@(format_urn(urns.tel)) → (202) 456-1111
@(format_urn(urns.mailto)) → [email protected]
@(format_urn("NOT URN")) → ERROR

html_decode(texto): decodificações HTMLtext

@(html_decode("Red &amp; Blue")) → Red & Blue
@(html_decode("5 + 10")) → 5 + 10

if (teste, valor1, valor2): retorna value1se testé verdade e value2se não. Se o primeiro argumento for um erro, esse erro será retornado.

@(if(1 = 1, "foo", "bar")) → foo
@(if("foo" > "bar", "foo", "bar")) → ERROR

is_error(valor): retorna se valuetiver um erro.

@(is_error(datetime("foo"))) → true
@(is_error(run.not.existing)) → true
@(is_error("hello")) → false

join(matriz, separador): associa o dadoarrayde strings comseparatorpara citar texto.

@(join(array("a", "b", "c"), "|")) → a|b|c
@(join(split("a.b.c", "."), " ")) → a b c

json(valor): retorna a representação JSON de value.

@(json("string")) → "string"
@(json(10)) → 10
@(json(null)) → null
@(json(contact.uuid)) → "5d76d86b-3bb9-4d5a-b822-c9d86f5d8e4f"

lower(texto): converte textpara minúsculas.

@(lower("HellO")) → hello
@(lower("hello")) → hello
@(lower("123")) → 123
@(lower("😀")) → 😀

max (números...): retorna o valor máximo emnumbers.

@(max(1, 2)) → 2
@(max(1, -1, 10)) → 10
@(max(1, 10, "foo")) → ERROR

mean(números...): retorna a média aritmética denumbers.

@(mean(1, 2)) → 1.5
@(mean(1, 2, 6)) → 3
@(mean(1, "foo")) → ERROR

min(números...): retorna o valor mínimo em numbers.

@(min(1, 2)) → 1
@(min(2, 2, -10)) → -10
@(min(1, 2, "foo")) → ERROR

mod(dividendo, divisor): retorna o restante da divisão de dividendpor divisor.

@(mod(5, 2)) → 1
@(mod(4, 2)) → 0
@(mod(5, "foo")) → ERROR

now(): retorna a data e a hora atuais no fuso horário atual.

@(now()) → 2018-04-11T13:24:30.123456-05:00

number(valores): tenta converter valuepara um número. Um erro será retornado se o valor não puder ser convertido.

@(number(10)) → 10
@(number("123.45000")) → 123.45
@(number("what?")) → ERROR

object(pares...): pega os pares de valores do nome da propriedade e os retorna como um novo objeto.

@(object()) → {}
@(object("a", 123, "b", "hello")) → {a: 123, b: hello}
@(object("a")) → ERROR

or(valores...): retorna se algum dos dados valuesé verdadeiro.

@(or(true)) → true
@(or(true, false, true)) → true

parse_datetime(texto, formato [, fuso horário]): analisa textem uma data usando o dadoformat. A cadeia de formato pode consistir nos seguintes caracteres. Os caracteres '', ':', ',', 'T', '-' e '_' são ignorados. Qualquer outro caractere é um erro.

  • YY- últimos dois dígitos do ano 0-99
  • YYYY- quatro dígitos do ano 0000-9999
  • M- mês 1-12
  • MM- mês 01-12
  • D- dia do mês 1-31
  • DD- dia do mês, zero preenchido 01-31
  • h- hora do dia 1-12
  • hh- hora do dia 01-12
  • tt- vinte de quatro horas do dia 00-23
  • m- minuto 0-59
  • mm- minuto 00-59
  • s- segundo 0-59
  • ss- segundo 00-59
  • fff- milissegundos
  • ffffff- microssegundos
  • fffffffff- nanosegundos
  • aa- AM ou PM
  • AA- AM ou PM
  • Z- deslocamento de hora e minuto do UTC ou Z do UTC
  • ZZZ- deslocamento de hora e minuto do UTC

O fuso horário deve ser o nome de local, conforme especificado no bando de dados do fuso horário da IANA, como ""America / Guayaquil" ou "America / Los_Angeles". Se não especificado, o fuso horário atual será usado. Um erro será retornado se o fuso horário não for reconhecido.

Observe que os segundos fracionários serão analisados mesmo sem um identificador de formato explícito. Você deve especificar apenas segundos fracionários quando desejar afirmar o número de lugares no formato de entrada.

parse_datetime retornará um erro se não conseguir converter o texto em uma datetime.

@(parse_datetime("1979-07-18", "YYYY-MM-DD")) → 1979-07-18T00:00:00.000000-05:00
@(parse_datetime("2010 5 10", "YYYY M DD")) → 2010-05-10T00:00:00.000000-05:00@(parse_datetime("2010 5 10 12:50", "YYYY M DD tt:mm", "America/Los_Angeles")) → 2010-05-10T12:50:00.000000-07:00
@(parse_datetime("NOT DATE", "YYYY-MM-DD")) → ERROR

parse_json(texto): tenta analisar textcomo JSON. Se o textJSON fornecido não for válido, será retornado um erro.

@(parse_json("{\"foo\": \"bar\"}").foo) → bar
@(parse_json("[1,2,3,4]")[2]) → 3
@(parse_json("invalid json")) → ERROR

parse_time(texto, formato): analisa textem um tempo usando o dadoformat. A cadeia de formato pode consistir nos seguintes caracteres. Os caracteres '', ':', ',', 'T', '-' e '_' são ignorados. Qualquer outro caractere é um erro.

  • h- hora do dia 1-12
  • hh- hora do dia 01-12
  • tt- vinte de quatro horas do dia 00-23
  • m- minuto 0-59
  • mm- minuto 00-59
  • s- segundo 0-59
  • ss- segundo 00-59
  • fff- milissegundos
  • ffffff- microssegundos
  • fffffffff- nanosegundos
  • aa- AM ou PM
  • AA- AM ou PM

Observe que os segundos fracionários serão analisados mesmo sem um identificador de formato explícito. Você deve especificar apenas segundos fracionários quando desejar afirmar o número de lugares no formato de entrada.

parse_time retornará um erro se não conseguir converter o texto em uma datetime.

@(parse_time("15:28", "tt:mm")) → 15:28:00.000000
@(parse_time("2:40 pm", "h:mm aa")) → 14:40:00.000000
@(parse_time("NOT TIME", "tt:mm")) → ERROR

percent(número): formatosnumbercomo uma porcentagem.

@(percent(0.54234)) → 54%
@(percent(1.2)) → 120%
@(percent("foo")) → ERROR

rand(): retorna um único número aleatório entre [0,0-1,0).

@(rand()) → 0.607552015674623913099594574305228888988494873046875@(rand()) → 0.484677570947340263796121462291921488940715789794921875

rand_between(): um único inteiro aleatório no intervalo inclusivo fornecido.

@(rand_between(1, 10)) → 10
@(rand_between(1, 10)) → 2

read_chars(texto): converte textem algo que pode ser lido pelos sistemas de URA. O ReadChars dividirá os números como eles são mais fáceis de entender. Isso inclui a divisão em 3s ou 4s, se apropriado.

@(read_chars("1234")) → 1 2 3 4
@(read_chars("abc")) → a b c
@(read_chars("abcdef")) → a b c , d e f

regex_match(texto, padrão [, grupo]): retorna a primeira correspondência da expressão regularpatternemtext. Um terceiro parâmetro opcional groupdetermina qual grupo correspondente será retornado.

@(regex_match("sda34dfddg67", "\d+")) → 34
@(regex_match("Bob Smith", "(\w+) (\w+)", 1)) → Bob
@(regex_match("Bob Smith", "(\w+) (\w+)", 2)) → Smith
@(regex_match("Bob Smith", "(\w+) (\w+)", 5)) → ERROR
@(regex_match("abc", "[\.")) → ERROR

remove_first_word(texto): remove a primeira palavra de text.

@(remove_first_word("foo bar")) → bar
@(remove_first_word("Hi there. I'm a flow!")) → there. I'm a flow!

repeat(texto, contagem): retorna o número textrepetido countde vezes.

@(repeat("*", 8)) → ********
@(repeat("*", "foo")) → ERROR

replace(texto, agulha, substituição [, contagem]): substitui até as countocorrências de needlecom replacementem text. Secountfor omitido ou for menor que 0, todas as ocorrências serão substituídas.

@(replace("foo bar foo", "foo", "zap")) → zap bar zap
@(replace("foo bar foo", "foo", "zap", 1)) → zap bar foo
@(replace("foo bar", "baz", "zap")) → foo bar

replace_time(datetime): retorna um novo datetime com a parte do tempo substituída portime.

@(replace_time(now(), "10:30")) → 2018-04-11T10:30:00.000000-05:00@(replace_time("2017-01-15", "10:30")) → 2017-01-15T10:30:00.000000-05:00@(replace_time("foo", "10:30")) → ERROR

round(número [, lugares]): arredonda numberpara o valor mais próximo. Opcionalmente, você pode passar o número de casas decimais para arredondar para asplaces. Se places<0, arredondará a parte inteira para os 10^ mais próximos (- lugares).

@(round(12)) → 12
@(round(12.141)) → 12
@(round(12.6)) → 13
@(round(12.141, 2)) → 12.14
@(round(12.146, 2)) → 12.15
@(round(12.146, -1)) → 10
@(round("notnum", 2)) → ERROR

round_down(número [, lugares]): arredonda numberpara baixo até o valor inteiro mais próximo. Opcionalmente, você pode passar o número de casas decimais para arredondar para as places.

@(round_down(12)) → 12
@(round_down(12.141)) → 12
@(round_down(12.6)) → 12
@(round_down(12.141, 2)) → 12.14
@(round_down(12.146, 2)) → 12.14
@(round_down("foo")) → ERROR

round_up(número [, lugares]): arredonda numberpara o valor inteiro mais próximo. Opcionalmente, você pode passar o número de casas decimais para arredondar para as places.

@(round_up(12)) → 12
@(round_up(12.141)) → 13
@(round_up(12.6)) → 13
@(round_up(12.141, 2)) → 12.15
@(round_up(12.146, 2)) → 12.15
@(round_up("foo")) → ERROR

split(texto, [, delimitadores]): divide textem uma matriz de palavras separadas. Valores vazios são removidos da lista retornada. Há um parâmetro final opcional, delimiters que é uma sequência de caracteres usada para dividir o texto em palavras.

@(split("a b c")) → [a, b, c]
@(split("a", " ")) → [a]
@(split("abc..d", ".")) → [abc, d]
@(split("a.b.c.", ".")) → [a, b, c]
@(split("a|b,c d", " .|,")) → [a, b, c, d]

text(valor): tenta converter valueem texto. Um erro será retornado se o valor não puder ser convertido.

@(text(3 = 3)) → true
@(json(text(123.45))) → "123.45"
@(text(1 / 0)) → ERROR

text_compare(texto1, texto2): retorna a ordem do dicionário de text1e text2. O valor retornado será -1 se text1vier antes de text2, 0 se eles forem iguais e 1 se text1vier depois de text2.

@(text_compare("abc", "abc")) → 0
@(text_compare("abc", "def")) → -1
@(text_compare("zzz", "aaa")) → 1

text_length(valor): retorna o comprimento (numero de caracteres) de valuequando convertido em texto.

@(text_length("abc")) → 3
@(text_length(array(2, 3))) → 6

text_slice(texto, início [, fim]): retorna a partetextentre start(inclusive) e end(exclusivo). Se endnão for especificado, todo o restante textserá incluído. Valores negativos para startou endcomeçam no final de text.

@(text_slice("hello", 2)) → llo
@(text_slice("hello", 1, 3)) → el
@(text_slice("hello😁", -3, -1)) → lo
@(text_slice("hello", 7)) →

time(valor do tempo): tenta converter valuepara um horário. Se for um texto, ele será analisado em um horário usando o formato de horário padrão. Um erro será retornado se o valor não puder ser convertido.

@(time("10:30")) → 10:30:00.000000
@(time("10:30:45 PM")) → 22:30:45.000000
@(time(datetime("1979-07-18T10:30:45.123456Z"))) → 10:30:45.123456
@(time("what?")) → ERROR

time_from_parts(hora, minuto, segundo): cria um tempo de hour, minutee second.

@(time_from_parts(14, 40, 15)) → 14:40:15.000000
@(time_from_parts(8, 10, 0)) → 08:10:00.000000
@(time_from_parts(25, 0, 0)) → ERROR

title(texto): coloca em maiúscula cada palavra em text

@(title("foo")) → Foo
@(title("ryan lewis")) → Ryan Lewis
@(title("RYAN LEWIS")) → Ryan Lewis
@(title(123)) → 123

today(): retorna a data atual no fuso horário do ambiente.

@(today()) → 2018-04-11

trim(texto, [, caracteres]): remove o espaço em branco de qualquer extremidade de text. Há um parâmetro opcional, charsque é uma sequência de caracteres a serem removidas em vez do espaço em branco.

@(trim(" hello world    ")) → hello world
@(trim("+123157568", "+")) → 123157568

trim_left(texto, [, caracteres]): remove o espaço em branco desde o início do text. Há um parâmetro opcional, charsque é uma sequência de caracteres a serem removidas em vez do espaço em branco.

@("*" & trim_left(" hello world   ") & "*") → *hello world   *@(trim_left("+12345+", "+")) → 12345+

trim_right(texto, [, caracteres]): remove o espaço em branco do final de text. Há um parâmetro opcional, charsque é uma sequência de caracteres a serem removidas em vez do espaço em branco.

@("*" & trim_right(" hello world   ") & "*") → * hello world*@(trim_right("+12345+", "+")) → +12345

tz(data): retorna o nome do fuso horário de date. Se nenhuma informação de fuso horário estiver presente na data, o fuso horário atual será retornado.

@(tz("2017-01-15T02:15:18.123456Z")) → UTC
@(tz("2017-01-15 02:15:18PM")) → America/Guayaquil
@(tz("2017-01-15")) → America/Guayaquil
@(tz("foo")) → ERROR

tz_offset(data): retorna o deslocamento do fuso horário de date. O deslocamento é retornado no formato [+/-]HH:MM. Se nenhuma informação de fuso horário estiver presente na data, o fuso horário atual será retornado.

@(tz_offset("2017-01-15T02:15:18.123456Z")) → +0000
@(tz_offset("2017-01-15 02:15:18PM")) → -0500
@(tz_offset("2017-01-15")) → -0500
@(tz_offset("foo")) → ERROR

upper(texto): converte textem maiúsculas.

@(upper("Asdf")) → ASDF
@(upper(123)) → 123

url_encode(texto): codifica text para uso como um parâmetro de URL.

@(url_encode("two & words")) → two%20%26%20words
@(url_encode(10)) → 10

url_parts(urn): analisa uma URL em suas diferentes partes.

@(urn_parts("tel:+593979012345")) → {display: , path: +593979012345, scheme: tel}
@(urn_parts("twitterid:3263621177#bobby")) → {display: bobby, path: 3263621177, scheme: twitterid}@(urn_parts("not a urn")) → ERROR

week_number(data): retorna o número da semana (1-54) de date.

@(week_number("2019-01-01")) → 1
@(week_number("2019-07-23T16:56:59.000000Z")) → 30
@(week_number("xx")) → ERROR

weekday(data): retorna o dia da semana para date. Considera-se que a semana começa no domingo; portanto, um domingo retorna 0, uma segunda-feira retorna 1, etc.

@(weekday("2017-01-15")) → 0
@(weekday("foo")) → ERROR

word(texto, índice [, delimitadores]): retorna a palavra indexem text. Os índices começam em zero. Há um parâmetro opcional, delimitersque é uma sequência de caracteres usada para dividir o texto em palavras.

@(word("bee cat dog", 0)) → bee
@(word("bee.cat,dog", 0)) → bee
@(word("bee.cat,dog", 1)) → cat
@(word("bee.cat,dog", 2)) → dog
@(word("bee.cat,dog", -1)) → dog
@(word("bee.cat,dog", -2)) → cat
@(word("bee.*cat,dog", 1, ".*=|")) → cat,dog
@(word("O'Grady O'Flaggerty", 1, " ")) → O'Flaggerty

word_count(texto, [, delimitadores]): retorna o número de palavras em text. Há um parâmetro opcional, delimitersque é uma sequência de caracteres usada para dividir o texto em palavras.

@(word_count("foo bar")) → 2
@(word_count(10)) → 1
@(word_count("")) → 0
@(word_count("😀😃😄😁")) → 4
@(word_count("bee.*cat,dog", ".*=|")) → 2
@(word_count("O'Grady O'Flaggerty", " ")) → 2

word_slice(texto, início, fim [, delimitadores]): extrai uma sub-sequência de palavras de text. As palavras retornadas são aquelas que até incluem start, mas não incluem end

. Os índices começam em zero e um valor final negativo significa que todas as palavras após o início devem ser retornadas. Há um parâmetro opcional, delimitersque é uma sequência de caracteres usada para dividir o texto em palavras.

@(word_slice("bee cat dog", 0, 1)) → bee
@(word_slice("bee cat dog", 0, 2)) → bee cat
@(word_slice("bee cat dog", 1, -1)) → cat dog
@(word_slice("bee cat dog", 1)) → cat dog
@(word_slice("bee cat dog", 2, 3)) → dog
@(word_slice("bee cat dog", 3, 10)) →
@(word_slice("bee.*cat,dog", 1, -1, ".*=|,")) → cat dog
@(word_slice("O'Grady O'Flaggerty", 1, 2, " ")) → O'Flaggerty

How did we do?

Variables Glossary

Flows introduction

Contact