# Funções Double Braces

Você pode usar funções Double Braces para manipular dados em um *pipeline*.

## Sintaxe

As funções Double Braces são usadas entre dois conjuntos de chaves e um espaço em branco, com o nome da função seguido por uma lista de parâmetros entre parênteses, como abaixo:

```
{{ NOMEDAFUNÇÃO(param1, param2) }}
```

Funções Double Braces são *case-insensitive*, isto é, não diferenciam entre letras maiúsculas e minúsculas. Entretanto, nós recomendamos como uma melhor prática escrevê-las com letras maiúsculas.

## Funções aninhadas

Você pode fazer chamadas a funções Double Braces dentro de outras funções, como abaixo:

```
{{ FUNÇÃOEXTERNA(FUNÇÃOINTERNA(param1, param2), param3) }}
```

Quando usa essa sintaxe, as funções são executadas de dentro para fora. Isto é, no exemplo acima, `FUNÇÃOINTERNA` é executada primeiro e seu *output* é usado como um parâmetro de `FUNÇÃOEXTERNA`, que é executada por último.

Diferentemente das linguagens de programação, as expessões Double Braces executam todas as funções ao mesmo tempo, independentemente se a condição do IF é `true` ou `false`. Isso difere das linguagens de programação, que normalmente executam as funções somente após checar a condição do IF.

#### Exemplo

**Input**

```
{
    "date": "2022-10-26T03:00:00Z"
}
```

**Expressão Double Braces**

```
{
    "format": {{ IF(EQUALTO(SIZE(message.date),20),FORMATDATE( message.date, "yyyy-MM-dd'T'HH:mm:ss'Z'", "dd/MM/yyyy"),FORMATDATE( message.date, "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", "dd/MM/yyyy")) }}
}
```

**Output**

```
{
  "success": false,
  "message": "Encountered a configuration error while generating JSON",
  "error": "com.digibee.pipelineengine.exception.PipelineEngineConfigurationException: com.digibee.doublebraces.service.DoubleBracesConfigurationException: Syntax error parsing double braces expression {{ IF(EQUALTO(SIZE(message.date),20),FORMATDATE( message.date, \"yyyy-MM-dd'T'HH:mm:ss'Z'\", \"dd/MM/yyyy\"),FORMATDATE( message.date, \"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'\", \"dd/MM/yyyy\")) }}: Could not parse date/time evaluating function FORMATDATE. Error: Text '2022-10-26T03:00:00Z' could not be parsed at index 19"
}
```

## Lista de funções

Abaixo, listamos as funções Double Braces por grupos baseados em seu uso.

### DE COMPARAÇÃO <a href="#de-comparao" id="de-comparao"></a>

Usadas para comparar *inputs* booleanos. Para saber mais, leia o artigo [Funções de Comparação](/documentation/connectors-and-triggers/pt-br/double-braces/double-braces-functions/comparison-functions.md):

* AND
* NOT
* OR
* XOR

### NUMÉRICAS <a href="#numricas" id="numricas"></a>

Usadas para manipular valores numéricos. Para saber mais, leia o artigo [Funções Numéricas](/documentation/connectors-and-triggers/pt-br/double-braces/double-braces-functions/numerical-functions.md):

* FORMATNUMBER
* TODOUBLE
* TOINT
* TOLONG
* TONUMBER
* RANDOMNUMBERS

### CONDICIONAIS <a href="#condicionais" id="condicionais"></a>

As funções desse grupo retornam um valor de acordo com um critério específico. Para saber mais, leia o artigo [Funções Condicionais](/documentation/connectors-and-triggers/pt-br/double-braces/double-braces-functions/conditional-functions.md):

* EQUALTO
* GREATERTHAN
* GREATERTHANEQUAL
* IF
* LESSTHAN
* LESSTHANEQUAL
* ISOBJECT
* ISARRAY
* ISBOOLEAN
* ISSTRING
* ISNUMBER
* ISNULL
* SWITCHCASE
* ISABSENT

### DE DATA <a href="#de-data" id="de-data"></a>

Usadas para manipular datas. Para saber mais, leia o artigo [Funções de Data](/documentation/connectors-and-triggers/pt-br/double-braces/double-braces-functions/date-functions.md):

* FORMATDATE
* NOW
* SUMDATE
* TOISODATE
* DIFFDATE

### DE ARQUIVO <a href="#de-arquivo" id="de-arquivo"></a>

Usadas para consultar metadados e validar arquivos. Para saber mais, leia o artigo [Funções de Arquivo](/documentation/connectors-and-triggers/pt-br/double-braces/double-braces-functions/file-functions.md):&#x20;

* FILEEXISTS
* FILESIZE

### DE JSON <a href="#de-json" id="de-json"></a>

Usadas para manipular objetos JSON. Para saber mais, leia o artigo [Funções de JSON](/documentation/connectors-and-triggers/pt-br/double-braces/double-braces-functions/json-functions.md):

* JSONPATH
* TOJSON
* UNESCAPEJSON
* GETELEMENTAT
* LASTELEMENT
* REMOVEAT
* NEWEMPTYOBJECT
* NEWEMPTYARRAY
* PUSH
* POP
* CARDINALITYONE
* CARDINALITYMANY

### MATEMÁTICAS <a href="#matemticas" id="matemticas"></a>

Usadas para fazer operações matemáticas. Para saber mais, leia o artigo [Funções Matemáticas](/documentation/connectors-and-triggers/pt-br/double-braces/double-braces-functions/math-functions.md):

* ABS
* CEIL
* DIVIDE
* LOG
* MAX
* MIN
* MOD
* MULTIPLY
* POW
* ROUND
* SQRT
* SUBTRACT
* SUM

### DE STRING <a href="#de-string" id="de-string"></a>

Usadas para manipular *strings*. Para saber mais, leia o artigo [Funções de String](/documentation/connectors-and-triggers/pt-br/double-braces/double-braces-functions/string-functions.md):

* CAPITALIZE
* CONCATWITHOUTTAB
* CONCAT
* ESCAPE
* FUZZYMATCH
* INDEXOF
* JOIN
* LASTINDEXOF
* LEFTPAD
* LOWERCASE
* MATCHES
* NORMALIZE
* REPLACE
* RIGHTPAD
* SPLIT
* SUBSTRING
* TOSTRING
* UPPERCASE
* CONTAINS
* DEFAULT
* UNESCAPE
* TRIM
* STRINGMATCHES
* RANDOMSTRINGS

### DE UTILIDADE <a href="#de-utilidades" id="de-utilidades"></a>

Usadas para fazer operações que não se encaixam nas outras categorias. Para saber mais, leia o artigo [Funções de Utilidade](/documentation/connectors-and-triggers/pt-br/double-braces/double-braces-functions/utilities-functions.md):&#x20;

* BASEDECODE
* BASEENCODE
* UUID
* TOBOOLEAN
* SIZE
* BASEURLDECODE
* BASEURLENCODE
* URIDECODE
* URIENCOD


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.digibee.com/documentation/connectors-and-triggers/pt-br/double-braces/double-braces-functions.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
