Pular para o conteúdo principal

Funções

Visão Geral

Go Template fornece uma quantidade limitada de funções e foi projetado para ser estendido. Além das funções padrão, o DHuO utiliza a biblioteca sprig e também disponibiliza um conjunto próprio de funções customizadas.

Core

Aqui estão as funções mais utilizadas da biblioteca padrão. Para mais detalhes sobre outras funções, verifique a documentação do pacote text/template do Go.

Funções lógicas

not

{{not arg}}

Retorna a negação booleana de seu único argumento. Parâmetros:

  • arg: valor a ser negado.

and

{{and arg1 ..argn}}

Retorna a comparação lógica arg1 AND arg2... AND argn de seus argumentos. Se pelo menos um argumento for vazio, o primeiro vazio é retornado (representando um "false"). Caso contrário, o último argumento avaliado é retornado (representando um "true"). Todos os argumentos são avaliados. Os valores considerados vazios são: false, 0, nulo (nil) ou qualquer lista (array), mapa (chave-valor) ou string de tamanho zero. Quando utilizado dentro de condicionais, os valores vazios são tratados como falso. Parâmetros:

  • arg1: valor a ser comparado.
  • argn: valor a ser comparado.

or

{{or arg1 ..argn}}

Retorna a comparação lógica arg1 OR arg2... OR argn de seus argumentos. Se pelo menos um argumento for não vazio, o primeiro não vazio é retornado (representando um "true"). Caso contrário, o último argumento avaliado é retornado (representando um "false"). Todos os argumentos são avaliados. Os valores considerados vazios são: false, 0, nulo (nil) ou qualquer lista (array), mapa (chave-valor) ou string de tamanho zero. Quando utilizado dentro de condicionais, os valores vazios são tratados como falso. Parâmetros:

  • arg1: valor a ser comparado.
  • argn: valor a ser comparado.

Funções de comparação

eq

{{eq arg1 arg2}}

Retorna o valor booleano (true ou false) da comparação arg1 == arg2. Parâmetros:

  • arg1: valor a ser comparado.
  • arg2: valor a ser comparado.

ne

{{ne arg1 arg2}}

Retorna o valor booleano (true ou false) da comparação arg1 != arg2. Parâmetros:

  • arg1: valor a ser comparado.
  • arg2: valor a ser comparado.

lt

{{lt arg1 arg2}}

Retorna o valor booleano (true ou false) da comparação arg1 < arg2. Parâmetros:

  • arg1: valor a ser comparado.
  • arg2: valor a ser comparado.

le

{{le arg1 arg2}}

Retorna o valor booleano (true ou false) da comparação arg1 <= arg2. Parâmetros:

  • arg1: valor a ser comparado.
  • arg2: valor a ser comparado.

gt

{{gt arg1 arg2}}

Retorna o valor booleano (true ou false) da comparação arg1 > arg2. Parâmetros:

  • arg1: valor a ser comparado.
  • arg2: valor a ser comparado.

ge

{{ge arg1 arg2}}

Retorna o valor booleano (true ou false) da comparação arg1 >= arg2. Parâmetros:

  • arg1: valor a ser comparado.
  • arg2: valor a ser comparado.

Funções para strings, listas e mapas

len

{{len elem}}

Retorna o tamanho do elemento. Para listas, o tamanho refere-se à quantidade de itens; para mapas, refere-se à quantidade de chaves e para strings, refere-se à quantidade de caracteres. Parâmetros:

  • elem: elemento a ser analisado. Pode ser um mapa chave-valor, uma lista ou string.

index

{{index src idx1 ..idxn}}

Retorna o elemento presente na estrutura conforme o índice desejado. A estrutura deve ser um mapa ou uma lista. Parâmetros:

  • src: estrutura contendo o elemento indexado. Deve ser um mapa chave-valor ou lista.
  • idx1, idxn: índices a serem percorridos na estrutura. Para mapas são strings referentes às chaves de um ou mais níveis. Também é possível utilizar a sintaxe "idx1.idxn" para o caminho de índices a serem percorridos. Para listas, refere-se à posição do elemento, onde o primeiro é 0. Caso seja uma lista multidimensional, os parâmetros seguintes referem-se aos índices das sub listas.

Funções utilitárias

print, println, printf

{{print arg ..argn}}
{{println arg ..argn}}
{{printf format arg ..argn}}

Retorna os argumentos impressos (e formatados, se utilizado printf). Espaços são adicionados entre argumentos quando nenhum deles é uma string. Correspondem às funções-base da linguagem go fmt.Sprint, fmt.Sprintln e fmt.Sprintf, respectivamente.

Sprig

Aqui estão as funções mais utilizadas da biblioteca sprig. Para mais detalhes sobre outras funções, verifique a documentação oficial da biblioteca sprig.

Funções para strings

contains

{{contains search_str str}}

Retorna um booleano indicando se uma string está contida em outra. Parâmetros:

  • search_str: termo a ser contido
  • str: string de origem a ser analisada

regexMatch

{{regexMatch regex str}}

Retorna um booleano indicando se uma string corresponde a um padrão de expressão regular. Parâmetros:

  • regex: expressão regular a ser correspondida
  • str: string de origem a ser analisada

replace

{{replace str_from str_to str}}

Retorna uma string com a substituição de todas as ocorrências de um valor por outro em uma string. Caso não haja ocorrência do valor a ser substituído, a string original é retornada. Parâmetros:

  • str_from: string a ser substituída
  • str_to: nova string para substituição
  • str: string de origem a ser manipulada

cat

{{cat str1 ..strn}}

Retorna uma string composta pela concatenação de todas as strings, intercaladas por um espaço em branco. Parâmetros:

  • str1: string a ser concatenada.
  • strn: strings a serem concatenadas.

join

{{join list_str sep}}

Retorna uma string composta pela concatenação de todas as strings de uma lista intercaladas por um separador. Parâmetros:

  • list_str: lista de origem. A lista deve ser uma lista de strings.
  • sep: separador para intercalar entre cada string no resultado.

splitList

{{splitList sep str}}

Retorna uma lista de strings a partir de uma string quebrada por um separador.. Parâmetros:

  • sep: separador para quebra da string original.
  • str: string de origem a ser analisada

Funções para listas

list

{{list item1 ..itemn}}

Retorna uma lista criada com os itens informados. Caso nenhum item seja fornecido, uma lista vazia é criada. Parâmetros:

  • item1: iten a ser adicionado na lista.
  • itemn: itens a serem adicionados na lista.

append

{{append list item}}

Retorna uma nova lista, contendo os elementos da lista de origem acrescido o novo item. Parâmetros:

  • list: lista de origem.
  • item: item a ser adicionado na lista.

Funções JSON

toJson

{{toJson item}}

Retorna uma string sendo a representação JSON do item desejado. Útil para converter estruturas de mapas chave-valor para JSON. Parâmetros:

  • item: estrutura de mapa a ser convertida para string JSON.

fromJson

{{fromJson item}}

Oposto da função toJson, retorna uma estrutura de mapas chave-valor a partir de um JSON em formato string. Parâmetros:

  • item: string contendo o JSON a ser convertido para estrutura de mapa.

Funções utilitárias

default

{{default default_value elem}}

Retorna um valor padrão caso o elemento seja vazio ou o elemento, caso contrário. Os valores considerados vazios são: false, 0, nulo (nil) ou qualquer lista (array), mapa (chave-valor) ou string de tamanho zero.

  • default_value: valor padrão.
  • elem: elemento a ser analisado. Caso não seja vazio, ele é retornado.

uuidv4

{{uuidv4}}

Retorna uma string gerada randomicamente no padrão UUID v4.

b64enc

{{b64enc value}}

Codifica um valor para formato base64. Parâmetros:

  • value: valor string a ser codificado para base64.

b64dec

{{b64dec value}}

Decodifica um valor em formato base64. Parâmetros:

  • value: valor string a ser decodificado em base64.

DHuO

Funções para mapas

initTag

{{initTag}}

Retorna um mapa chave-valor vazio.

addTag

{{addTag map field value}}

Adiciona um campo em um mapa chave-valor. Não há retorno da função, pois o próprio mapa informado é atualizado. Parâmetros:

  • map: mapa chave-valor onde será inserido campo. Para estruturas aninhadas, é possível navegar pela notação de ponto. Ex: {{addTag $myMap.field1.field2 "field3" 123}} adicionará o campo "field3" como filho do campo "field2" para o mapa presente na variável $"myMap".
  • field: nome do campo (chave) a ser adicionado no mapa. Caso o campo exista, seu valor será atualizado. Para estruturas aninhadas é possível fornecer o nome dos campos aninhados pela notação de ponto. Ex: {{addTag $myMap "field1.field2.field3" 123}} adicionará os campos (caso não existam) "field1", "field2" e "field3" aninhados.
  • value: valor do campo. Não pode ser vazio. Caso seja necessário adicionar um campo com valor vazio, utilize a função setTag.

setTag

{{setTag map field value}}

Semelhante à função addTag, porém aceita atributos com valores vazios.

remTag

{{remTag map field}}

Remove um atributo de um mapa chave-valor, caso exista. Não há retorno da função, pois o próprio mapa informado é atualizado. Parâmetros:

  • map: mapa chave-valor de onde será removido o campo. Para estruturas aninhadas, é possível navegar pela notação de ponto. Ex: {{remTag $myMap.field1.field2 "field3"}} removerá o campo "field3" aninhado abaixo dos campos "field1" e "field2" do mapa presente na variável $"myMap".
  • field: nome do campo (chave) a ser removido do mapa. Para estruturas aninhadas, é possível fornecer o nome dos campos aninhados pela notação de ponto. Ex: {{remTag $myMap "field1.field2.field3"}} removerá o campo "field3" aninhado abaixo dos campos "field1" e "field2" do mapa presente na variável $"myMap".

Funções para XML

addTagXml

{{addTagXml key value}}

Retorna uma representação em texto (string) de uma tag XML a partir de uma chave e um valor. Parâmetros:

  • key: nome do atributo. Será o nome da tag XML <key></key>.
  • value: valor do atributo. Não pode ser vazio. Caso seja necessário adicionar um atributo com valor vazio, utilize a função setTagXML.

setTagXml

Semelhante à função addTagXml, porém aceita atributos com valores vazios, resultando em um xml vazio. Exemplo: <result></result>

Funções para listas

makeList

{{makeList item}}

Retorna uma lista vazia ou a partir de um item existente. Caso o item fornecido seja nulo (nil) ou vazio, uma lista vazia é criada. Diferenças em relação à função list do sprig:

  • makeList aceita apenas um item como argumento (obrigatório). Para a função list, o item é opcional, sendo possível informar mais de um item
  • para makeList, caso o item seja uma lista pré-existente, a lista é copiada. Para a função list, a lista é adicionada como elemento único na lista, criando uma lista multidimensional

Parâmetros:

  • item: elemento inicial da lista. Caso deseje uma lista vazia, passar o valor nil.

Go Plugin

É possível criar funções customizadas e estender as capacidades do Go Template nos fluxos de integração, utilizando o componente Go Plugin. Para saber mais, acesse a seção Go Plugin.