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çãolist
, 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çãolist
, 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.