Menu
Feedback
Comece aqui
Tutoriais


Tutoriais
Fluxos
Glossário de Expressões
19 min de leitura

Visão geral

Expressões são fórmulas utilizadas na plataforma de forma muito semelhante às usadas em programas de planilha, como a do Microsoft Excel. Embora tenham evoluído com o tempo e essas semelhanças sejam muito menores agora. É uma linguagem de modelagem baseada em expressões que visa facilitar a geração de texto a partir de um contexto de valores.

Nesse artigo trataremos um pouco sobre:

  • Modelos
  • Tipos
  • Operadores
  • Funções

Modelos

Expressões podem ser chamadas usando o seguinte modelo: @(...).

Por exemplo, o modelo Hi @(""Dr "" & upper(foo))pega o valor da variável @foo, converte para maiúsculas e o prefixa com outra palavra. Observe que dentro de uma expressão complexa você não precisa colocar @ antes de todas as variáveis.

Tipos

Temos os seguintes tipos de expressões aceitos na plataforma: Array: usado para a criação de um array de itens:


@(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]

Booleano: é um booleano verdadeiroou falso


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

Data: é um valor de data do calendário gregoriano


@(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""

Data e Hora: é um valor de data e hora


@(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""

Função: é uma função que pode ser chamada


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

Número: é um número inteiro ou fracionado


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

Objeto: é um objeto com propriedades nomeadas


@(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\}

Texto: é uma sequência de caracteres


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

Tempo: é uma hora do dia


@(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""

Operadores

Abaixo, segue a lista de todos os operadores que podem ser utilizados na construção de expressões na plataforma: + : soma dois números


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

& : une dois valores de texto


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

/ : divide um número por outro


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

= : retorna ""true"" se dois valores são textualmente iguais


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

^ : ele um número à potência de outro


@(2 ^ 8) → 256

> : retorna ""true"" se o primeiro número for maior que o segundo


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

> = : retorna ""true"" se o primeiro número for maior que ou igual ao segundo


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

< : retorna ""true"" se o primeiro número for menor que o segundo


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

< = : retorna ""true"" se o primeiro número for menor que ou igual ao segundo


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

***** : multiplica dois números


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

- (un ário) : nega um número


@(-fields.age) → -23

! : retorna ""true"" se dois valores não são textualmente iguais


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

- (bin ário) : subtrai dois números


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

Funções

As expressões têm acesso a um conjunto de funções internas que podem ser usadas para executar tarefas mais complexas. As funções são chamadas usando a sintaxe @(function_name(args..)) e podem assumir como argumentos valores literais @(length(split(""1 2 3"", "" ""))ou variáveis no contexto@(title(contact.name).

abs(número): retorna o valor absoluto de number.


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

and(valores...): retorna se todos os dados de valuessão verdadeiros


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

array(valores...): toma vários valuese os retorna como uma matriz.


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

attachment_parts(anexo): analisa um anexo em suas diferentes partes


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

boolean(valor): tenta converter valuepara um booleano. Um erro será retornado se o valor não puder ser convertido.


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

char(código): retorna o caractere para UNICODE fornecido code. É o inverso do código.


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

clean(texto): remove todos os caracteres não imprimíveis de text. É o inverso de char.


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

code(texto): retorna o código UNICODE para o primeiro caractere de text. É o inverso do char.


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

count(valor): retorna o número de itens na matriz ou propriedades especificadas em um objeto. Ele retornará um erro se for passado um item que não é contável.


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

date(valor): tenta converter (valor)para uma data. Se for texto, ele será analisado em uma data usando o formato de data padrão. Um erro será retornado se o valor não puder ser convertido.


@(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(ano, mês, dia): cria uma data de year``month``day.


@(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(valor): tenta converter valuepara um datatime. Se for texto, ele será analisado em uma data e hora usando os formatos padrão de data e hora. Um erro será retornado se o valor não puder ser convertido.


@(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): Calcula o valor da data alcançada adicionando o offsetnúmero de unitao datetime. As durações válidas são ""Y"" para anos, ""M"" para meses, ""W"" para semanas, ""D"" para dias, ""h"" para horas, ""m"" para minutos e ""s"" para segundos.


@(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(date1``date2``unidade): retorna a duração entre date1e date2no unitespecificado. As durações válidas são ""Y"" para anos, ""M"" para meses, ""W"" para semanas, ""D"" para dias, ""h"" para horas, ""m"" para minutos e ""s"" para segundos.


@(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- retorna o mês, sem o zero 1-12

  • MM- retorna o mês com o zero preenchido 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- retorna o mês, sem o zero 1-12

  • MM- retorna o mês com o zero preenchido 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 sem o zero preenchido 0-59

  • mm- minuto com o zero preenchido 00-59

  • s- segundo sem o zero preenchido 0-59

  • ss- segundo sem o zero preenchido 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 sem o zero preenchido 0-59

  • mm- minuto com zero preenchido 00-59

  • s- segundo sem o zero preenchido 0-59

  • ss- segundo com o zero preencido 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)) → foo@bar.com @(format_urn(""NOT URN"")) → ERROR html_decode(texto): decodificações HTMLtext

    @(html_decode(""Red & 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 sem o zero preenchido 1-31

  • DD- dia do mês, zero preenchido 01-31

  • h- hora do dia sem o zero preenchido 1-12

  • hh- hora do dia com o zero preenchido 01-12

  • tt- vinte de quatro horas do dia 00-23

  • m- minuto sem o zero preenchido 0-59

  • mm- minuto com o zero preenchido 00-59

  • s- segundo sem o zero preenchido 0-59

  • ss- segundo com o zero preenchido 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 sem o zero preenchido 0-59
  • mm- minuto com o zero preenchido 00-59
  • s- segundo sem o zero preenchido 0-59
  • ss- segundo com o zero preenchido 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

Contribuidores
1
Photo of the contributor
+ 1 contributors
Isso foi útil?
Sim
Não
Sugerir edições (GitHub)
Introdução a expressões e variáveis
« Anterior
Editor de fluxo e suas ferramentas
Próximo »
Contribuidores
1
Photo of the contributor
+ 1 contributors
Isso foi útil?
Sugerir edições (GitHub)
Nesta página
Ainda tem dúvidas?
Pergunte à comunidade
Encontre soluções e compartilhe ideias na VTEX Community
Junte-se à nossa comunidade
Solicite suporte à VTEX
Receba assistência personalizada com nossos especialistas
Abra um ticket de suporte
GitHubDeveloper PortalComunidadeFeedback